본문 바로가기

전체 글110

Redis Replication 적용하기 들어가며레디스는 Stateliss의 특성을 가지므로 휘발성이 존재한다. 잘못하면 저장해둔 데이터가 다 날아가버리는 불상사가 생길 수 있다. 그래서 이를 방지하기 위해 master-slave 관계를 가진 서버를 추가로 미리 만들어 놓는다.개인 프로젝트를 진행하면서 레디스 서버 장애를 대비하기 위해 Replication 방식을 도입했다. 오늘은 스프링 부트를 통해 어떻게 적용을 했고, 테스트 결과에 대해 포스팅하려고 한다.적용 방법docker-compose.yml 우선 master 레디스 서버 1개, replica 서버 2개를 도커로 띄웠다. 기존에는 1개의 서버만 동작했으나 총 3개로 늘어났다.여기서 주의해야하는 부분은 slave 서버 컨테이너의 command 이다.command: redis-server .. 2024. 5. 18.
[Kafka] 하나의 토픽에 두개의 컨슈머가 구독하면 안되나요? 들어가며개인 프로젝트에서 대규모 데이터 처리를 위해 카프카를 도입했다. MSA를 사용해 서비스를 분리했기 때문에 주문이 들어오면 각 서비스 간에 이벤트를 주고 받게 된다. 주문 취소 기능을 구현하다가 하나의 토픽에 대해 두개의 컨슈머가 구독하여 각 서비스에서 행동을 하도록 구현을 했다. 그러나 하나의 서비스에서만 이벤트를 받아서 동작하였다. 이 문제를 분석하고 해결한 방식에 대해 작성할 예정이다. 문제 발생발생한 문제에 대해서는 이전에 설명한 것과 같다. 다시 간단하게 요약하자면 하나의 토픽을 두개의 컨슈머가 구독한 상황에서 하나의 컨슈머만 이벤트를 처리하고 있다는 것이다.처음에는 파티션이 1개여서 발생한 문제라고 추측을 했다. 그래서 파티션을 2개로 늘려서 다시 시도해봤지만 실패했다.이때 실패한 이유는.. 2024. 5. 16.
[항해 취업 리부트 코스] 개인프로젝트 4주차 후기 어쩌다보니 벌써 4주차가 끝났다...!기능 구현 하고 MSA 사용하기 위해 멀티모듈로 분리하고, 새로운 기술을 도입하느라 어려움을 겪던 게 엊그제 같은데 마지막 주차가 끝이 났다. 프로젝트를 하면서 혼자서는 절대 몰랐을 정보들도 많이 얻었고, 팀원들 그리고 멘토님, 매니저님들로부터 많은 걸 배울 수 있었다.또 개발을 하면서 내 스스로 어떤 사람인가에 대해 다시금 생각해볼 수 있었던 것 같다.나는 실패가 두려워 도전과 새로운 시도를 무서워하는 사람이라고 생각했다. 그렇기에 과거의 경험을 믿고 그 전에 사용해봤던 것만 추구하며 나의 바운더리를 스스로 제한하려는 경향이 있었던 것 같다. 하지만 이번 개인 프로젝트 주차를 진행하면서 내가 새로운 시도에 열려 있고, 도전하는 걸 즐길 수 있는 사람이라는 걸 알게 .. 2024. 5. 14.
SOLID의 단점을 알아보자! 보호되어 있는 글 입니다. 2024. 5. 13.