본문 바로가기

분류 전체보기87

Sentry에서 Cron 모니터링이 가능하다는 사실 크론 잡(Cron job)은 서버 관리나 작업을 자동화하는 데 많이 사용되는 방법 중 하나입니다. 예시를 들어보면 정기적으로 데이터베이스 백업을 수행하거나 문제가 되는 데이터를 정리하고, 이메일 알림을 발송하는 등 다양한 용도로 사용됩니다. 하지만 크론 작업을 무겁고 중요하게 사용할 경우 문제점이 하나 발생할 수 있는데요. 바로 모니터링이 쉽지 않다는 점입니다. 크론이 정상적으로 실행되고 종료되었는지, 오류가 발생하지 않았는지 혹시 중간에 배포가 있어서 끊기지 않았는지 확인하는 작업은 수동적이고 번거로울 수 있습니다. 개인의 퍼포먼스에 의존하는 만큼 관리하는 사람이 부재 중일 때, 문제가 발생한다면 꽤나 오래 문제가 지속될 수도 있습니다. 저 또한 비슷한 문제를 겪었습니다. 로직의 누락으로 크론이 실행 .. 2024. 10. 14.
Kafka 메세지를 안정적으로 다루는 방법 (Transaction Outbox Pattern) Transaction Outbox 패턴에 대하여 간단히는 알고 있었는데요. 앞으로 이벤트를 다루며 잘 알아두면 좋을 내용이라고 생각해서 구체적으로 어떤 문제를 해결하기 위하여 사용하며, 어떤 장/단점이 있는지 찾아보고 남겨봅니다. 기본적으로 Chris Richardson 선생님의 Pattern: Transactional outbox 아티클을 참고합니다. 풀고 싶은 문제어플리케이션 서버에서 비즈니스 로직을 처리하는 동안, 메세지의 발행까지 Transactional 함을 보장해야 하는 경우가 많습니다. 하지만, 기본적으로 이종 간의 Transaction은 완벽할 수 없습니다. 임시로 대응을 해보자면, Transaction Scope에서 Rollback이 가능한 작업을 모두 한 이후에 메세지 발행을 챙기는 방.. 2024. 10. 13.
이직했어요 정신차려보니 벌써 7월입니다. 캐롤 들으면서 연말 분위기를 누린 것이 정말 얼마 안된 것 같은데, 장마에 불평을 늘어두고 있는 요즘이네요. 이런 계절의 변화를 알아차리지 못할 정도로 올 상반기는 여러 사건들이 있었습니다. 가장 큰 부분은 이직이었는데요. 간단하게 이야기 해보려 합니다. 동기 부여 업을 선택함에 있어, 상당히 많은 종류의 선택할 수 있는 가치가 존재합니다. 이는 금전일 수 있고, 경력일 수 있겠네요. 모두 중요한 가치지만, 저는 올 상반기를 지나오며 일을 해야하는 동기를 찾는 것이 상당히 큰 가치 중 하나임을 느낄 수 있었습니다. 이전 직장에서 golang을 이용하여 새로운 사업을 진행했는데, 시작할 때 들었던 서비스도 아니었고 사업적으로 이해가 되는 선택이 있지도 않았습니다. 기술적으로도.. 2023. 7. 16.
Functional Option Pattern in Go Go 언어로 서버 프레임워크를 개발한다고 가정해봅시다. 서버는 다양한 옵션을 가질 수 있으며, 생성자를 통해 이를 설정할 수 있어야 합니다. 예를 들어 서버의 주소, 읽기 타임아웃, 로깅 등의 옵션을 설정할 수 있어야 하는데요. 예시를 들어보겠습니다. // 예시 위와 같이 이러한 옵션은 필수적이거나 선택적일 수 있습니다. 그렇다면 저 상황에서 다른 옵션이 추가된다면 어떨까요? 그에 맞게 생성자를 추가해야하고, 각 옵션이 optional하다면 추가해야하는 생성자가 기하급수적으로 늘어납니다. 물론 메서드 오버로딩을 지원하지 않는 특성 상, 네이밍도 상당히 어렵습니다. 오늘 이야기 해보려 하는 Functional Option Pattern은 이러한 문제를 해결하고자 등장한 패턴입니다. Functional Op.. 2023. 7. 2.