Skip to content
hello tis
Go back

[26.09.30] 로그 수집 방식을 최상·평균·최악의 경우로 나눠 비교하기

오늘 읽은 책

『다시, 소프트웨어 엔지니어』 (교보문고)

다시, 소프트웨어 엔지니어 책 표지

오늘 읽은 범위

기억하고 싶은 내용

읽으며 든 생각

내 일에 적용해 본다면

로그 수집 방식 두 가지

FireLensEFS + 공통 UF
Secrets Manager가 태스크마다 HEC 토큰을 주입하고, 태스크 안의 Fluent Bit이 LB와 HEC로 로그를 보내 Indexer 클러스터에서 인덱싱한 뒤 Search Head에서 검색하는 흐름태스크마다 EFS의 태스크별 디렉터리에 로그 파일을 쓰고, 공통 EC2 UF가 파일을 읽어 S2S로 Indexer 클러스터에 보내 ACK를 받으며, Deployment Server가 UF 설정을 배포하는 흐름

로그 수집 방식을 세 경우로 나눠 비교하기

경우FireLensEFS + 공통 UF
최상앱은 stdout에만 쓰면 된다. 태스크끼리 격리돼 있어 한 서비스의 로그가 폭증해도 다른 서비스 로그는 늦어지지 않는다.파일이 EFS에 남고, UF가 ACK와 체크포인트로 이어서 보내 유실이 거의 없다. 설정은 Deployment Server에서 한 번에 바꾼다.
평균배포나 스케일인 때 종료 대기 시간이 짧으면 몇 초 분량이 유실될 수 있다.감시할 파일이 늘수록 적재가 늦어진다. 재전송 때문에 같은 로그가 두 번 들어올 수 있다.
최악HEC 장애가 버퍼를 넘길 만큼 길어지면 넘친 로그가 버려진다. 피해는 로그에서 그친다.EFS 처리량이 한계에 닿으면 앱의 로그 쓰기가 막혀 API 응답이 느려진다. 공통 UF가 막히면 모든 서비스의 로그가 늦어진다.
최악 대응S3 출력을 함께 둔다. HEC 장애 중 버려진 로그를 S3에서 다시 적재할 수 있어, 유실은 버퍼에 남아 있던 양으로 줄어든다.EFS를 Elastic 처리량 모드로 두고, 앱은 비동기로 로그를 쓴다. 로그가 많은 서비스는 UF를 따로 둔다.
이 방식으로 보낼 로그몇 초에서 몇 분 분량의 유실을 감수할 수 있는 로그감사·정산 로그처럼 한 건도 잃으면 안 되는 로그

정리하자면

1장에서 기억하고 싶은 내용을 주제별로 묶으면 세 가지다.

주제책의 주장1장 소제목
엔지니어가 신경 쓰는 범위코드를 잘 짜는 데서 그치지 않고 확장성, 신뢰성, 효율성, 보안까지 고려한다. 규칙을 알고, 언제 규칙을 유연하게 적용하거나 깨야 하는지도 판단한다.다양한 명칭으로 불리는 엔지니어
현업은 남이 짠 코드를 다루는 일이다업무 시간 대부분이 레거시 코드와 내가 오기 전에 내려진 결정을 다루는 데 들어간다. 모든 코드를 이해하지 못한 채 수정하는 상황에 익숙해져야 한다. 다음 사람을 위해 코드를 정돈한다.기초의 중요성, 교육받은 지식과 알아야 할 지식, 황금률
코드를 쓰기 전에 문제부터 본다바로 코드를 쓰지 말고 생각할 시간을 확보한다. 최상·평균·최악의 경우를 비교하고, 이미 있는 해결책부터 찾는다. 임시 해결책을 경계하고, 요청 뒤에 있는 실제 필요를 파악한다. 이상한 관행이 보이면 왜 그런지 묻는다.게으른 프로그래머, 성급한 해결책, 새로운 시각

Share this post:

Previous Post
[26.10.01] ClickHouse로 적재 구조 단순화하기
Next Post
[26.09.29] 학습: 트랜잭션 유무별 조회와 이벤트 리스너 동작 확인하기