Transactional Outbox Pattern으로 이벤트 발행 원자성 확보하기
·
Project - AlgoMarket
본 게시글은 개인 프로젝트[AlgoMarket]를 개발하며 작성한 기록입니다. GitHub - ymkim97/algo-market: 개인 프로젝트 - 알고리즘 온라인 저지 서비스개인 프로젝트 - 알고리즘 온라인 저지 서비스. Contribute to ymkim97/algo-market development by creating an account on GitHub.github.comAlgoMarket의 채점 과정온라인 저지 서비스인 AlgoMarket은 사용자, 문제, 제출 등을 관리하는 1. 문제 서버(Java, SpringBoot) 와 실제 사용자가 제출한 코드를 컴파일 후 실행하여 채점하는 2. 채점 서버(Python)로 설계했습니다.이렇게 MSA, Message Driven 형태를 띄우고 있는 설..
Log4j2 아키텍처 분석하기 - 2
·
나의 생각
Configuration지난 글에서 봤던 모든 LoggerContext는 각각 활성화된 Configuration을 가지고 있습니다.모든 Appender, Layout, Filter, Logger의 설정을 모델링하며, StrSubstitutor 등의 참조를 포함하고 있습니다.Appender: 로그 출력 대상 (예: 파일, 콘솔, 원격 서버 등)Layout: 로그 메시지의 형식 정의Filter: 로그 출력 여부를 결정하는 조건Logger: 로그를 기록하는 주체StrSubstitutor: 변수 치환 기능을 제공하는 유틸리티 클래스 (예: ${env:HOME} 같은 표현을 실제 값으로 치환)Log4j Core의 Configuration은 일반적으로 애플리케이션 초기화 시에 수행됩니다.권장되는 방식은 1) 설정 ..
Log의 필요성과 주의점
·
나의 생각
들어가며백엔드 개발자(또는 개발자를 준비하는 사람)이라면 로그는 정말 중요하다는 말을 많이 듣게 됩니다.저 역시 초반에 귀가 닳도록 들었고, 그에 대한 중요성을 인지하고는 있었으나 몇 개의 프로젝트를 진행하다 보니 시간이 지나면서 비로소 직접 느끼기 시작했습니다.본 글을 통해 로그가 왜 중요한지 그리고 어떤 점에서 주의를 해야 할지 경험에서 느낀 저의 생각을 전달하려고 합니다. Log는 왜 필요하고 중요할까?애초에 왜 로깅이 필요한지에 대해서 얘기해보려고 합니다.일단 잠시 모든 것을 제쳐두고, 소제목처럼 원초적인 질문에 대해서 저의 한 문장의 대답은 이렇습니다.어떠한 시스템 즉 프로그램은 항상 예기치 못한 오류와 버그들로 가득 차 있고, 복잡한 코드 사이에서 버그가 발생했던 정확한 시간과 위치를 알아내고..