본문 바로가기

전체 글26

DB가 내부 망에 존재하는 이유 회사에서 보는 데이터베이스와 AWS같은 클라우드 제공 업체에서 DB 관련 Manged Service에 익숙하게 살다 보면 참 기본적인건데 앗차 싶을 때가 있다. 데이터베이스들은 모두 내부망에 있다는 것이다. (Public Ip를 할당 받고 접근 제어를 다 열지 않았다는 가정 하에 - AWS에서 이 옵션은 따로 선택해야 한다.) 즉 퍼블릭하게 공인 아이피를 타고 직접적으로 DB를 접근하는 것은 권장되지 않는 사항이라는 것이다. 근데 이 당연한 내용을 안 지키면 어떻게 되는지 가끔은 궁금하기도 하다. 경험 개인적으로 운영하려는 서버가 있다. 서버는 집에서 구동하는 On-Prem 방식이며 이 안에서는 MySQL이 돌고있다. 집 밖에서도 DB에 접근해서 개발할 필요가 있으면 하려고 3306 포트 접근을 직접 D.. 2024. 2. 17.
CPU Pinning 하나의 어플리케이션이 작업을 병렬적으로 처리하기 위해 물리 코어 수로 작업 단위를 나누고 이 작업을 처리하는 Worker Thread가 물리 코어 수만큼 존재하는 경우 Worker Thread들은 매번 코어들이 바뀌면서 스케줄링 된다. 이렇게 되면 다른 코어에 스케줄링 될 때마다 CPU cache의 hit rate가 낮아지게 된다. 다르게 말하면 Worker Thread 혹은 Process들을 각각의 코어에 고정 할당하게 된다면 CPU cache의 hit rate가 높아져서 기존보다 성능 향상에 도움이 될 것이다. CPU intensive한 작업의 경우 이는 유의미한 차이를 보인다. 이렇게 특정 코어에 프로세스나 쓰레드를 고정시키는 것을 CPU Pinning이라고 한다. CPU Pinning은 Proce.. 2024. 2. 14.
Connection Timeout Monitoring in Connection Pool 운영을 하다보면 예기치 못한 일들이 많이 일어난다. 해당 상황들이 실제 서비스의 가용성에 부정적인 영향을 미치는 상황을 방지하기 모니터링 툴을 사용한다. DataDog이나 Prometheus + Grafana와 같은 모니터링 어플리케이션들을 통해 메트릭을 수집하고 주기적으로 확인하여 이상현상을 체크하고 확인 할 수 없는 시간대나 갑작스러운 상황에 대비하여 Alert을 걸어서 슬렉으로 확인하거나 메일 혹은 전화를 받는 식으로 빠른 대응 및 원인 파악에 드는 시간을 줄일 수 있게 한다. 서비스의 가용성에 부정적인 영향을 미치는 지표는 여러가지가 있어서 당장 장애 상황에 직면하면 당황하기도 하고 뭐가 문제인지 파악이 어렵다. 그리고 설정상으로 수집이 안 되고 있는 메트릭이 장애 유발 포인트라면 확인 및 해결까.. 2024. 2. 11.
Idle in ALB, Connection Pool 같은 용어이고 비슷한 개념이지만 실제 동작은 다르기 때문에 가끔 혼란스러운 경우가 있다. 그중에 'Idle Timeout'이 있다. ALB Idle Timeout 보통 서비스는 앞에 부하 분산의 목적이나 무중단 배포를 위해 앞에 로드 벨런서를 둔다. ALB는 HTTP/HTTPS 기반 즉 7계층으로 사용하는 로드벨런서기 때문에 헤더 추가라던지 헤더 내부에서 정의하는 호스트 기반 라우팅이라던지 편리한 기능이 많다. 보통 앞에 ALB를 붙이면 이런 식으로 구성되게 되는데 Idle Timeout은 Client에서 ALB로 요청을 할 때 저 연결 흐름에서 해당 시간 동안 주고 받는 데이터가 없으면 커넥션이 제거된다. 즉 클라이언트 요청 시점에서 요청 처리에 idle timeout 시간이 초과 되면 해당 커넥션은 .. 2024. 2. 7.