김도현

관찰 가능성 엔지니어링 - Chapter3 (자동 계측)

원격 측정의 목표 시스템의 정보를 전달하여 장애가 발생 했을 때의 근본적인 원인을 분석할 수 있게하기 위함이다. 또한 장애가 해소된 후 기록된 추적/메트릭/로그 정보를 소급하면 정확히 어떤 문제가 발생한 것인지 알아낼 수 있다. 자동 계측은 이러한 사용성을 제공하기 위한 편의성을 확보하고자 코드를 계측하는 행위를 자동화한 것이다. 자동 계측...

가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 사용자 수에 따른 규모 확장성

단일 서버 가장 단순하게 사용자의 요청을 처리할 수 있는 구조이다. 사용자: 웹 브라우저, 모바앨 앱 서버: 웹 서버 위 상황에서 요청 흐름은 다음과 같다. 사용자는 DNS에 질의하여 서버의 IP를 얻는다. 해당 IP 주소로 HTTP 요청이 전달된다. 요청 받은 웹 서버는 HTML 혹은 JSON과 같은 응답을 전달한다. ...

관찰 가능성 엔지니어링 - Chapter1 (관찰 가능성의 역사와 개념)

개요 관찰 가능성이라는 용어에는 Trace, Metric, Log를 구성하는 도구의 원격측정(telemtry) 데이터를 생성/수집함으로써 소프트웨어 작동의 가시성을 높이는 작업이 포함된다. 수신된 요청 수의 카운트 유지하기 이벤트 발생 시 로그 추가하기 서버의 현재 메모리 사용량 기록하기 Client → Backend 서비스까지의 ...

비관적 락을 활용한 갱신손실 문제 해결

강의평가 작성 시 비관적 락을 활용한 동시성 문제를 해결 문제 상황 A라는 강의 레코드에 X, Y 가 각각 값을 올리고 내리는 요청이 동시에 발생했다. 레코드의 값을 증가시키기위 위해 SELECT 하는 구문과, 값을 감소시키기 위해 SELECT 하는 구문이 동시에 발생했고 커밋되는 시점이 달라 값을 증가시킨 요청이 커밋되었음에도 값을 감소시키는...

비동기 애노테이션 사용 시 주의점 (@Async, TaskExecutor)

문제 상황 클라이언트에 푸쉬 알림을 전송하기 위해 FCM 서버에 요청하는 로직을 추가했더니 아래와 같이 658ms가 소요되는 현상이 발생했다. 이 메서드를 추가하기 전에는 100ms도 넘지 않았던 응답시간이 저렇게 급격하게 늘어나니 클라이언트단에서도 응답을 기다리느라 사용자 경험을 해치는 상황이 발생하게 되었다. 어떻게 속도를 빠르게 할 ...