예시 답변 1
서비스 경계 설정을 가장 중요하게 꼽은 경험
저는 서비스를 나누는 경계를 가장 중요하게 생각합니다. 팀 프로젝트에서 처음엔 회원과 결제를 하나의 서비스로 묶었는데, 결제 로직만 자주 바뀌다 보니 배포할 때마다 회원 기능까지 영향을 받는 문제가 있었습니다. 이후 두 기능을 분리하고 나서야 서비스 경계가 바뀌는 빈도를 기준으로 나눠야 한다는 걸 이해했습니다.
경계를 잘못 나눈 실패를 통해 배운 점을 구체적으로 담았습니다.
면접관이 이 한 문장으로 확인하려는 것들. 각 갈래를 알면 답의 뼈대가 잡혀요.
저는 서비스를 나누는 경계를 가장 중요하게 생각합니다. 팀 프로젝트에서 처음엔 회원과 결제를 하나의 서비스로 묶었는데, 결제 로직만 자주 바뀌다 보니 배포할 때마다 회원 기능까지 영향을 받는 문제가 있었습니다. 이후 두 기능을 분리하고 나서야 서비스 경계가 바뀌는 빈도를 기준으로 나눠야 한다는 걸 이해했습니다.
저는 서비스가 서로 영향을 주지 않고 독립적으로 배포될 수 있는지를 가장 중요하게 봅니다. 프로젝트 초반에는 한 서비스를 수정할 때마다 전체를 다시 배포해야 해서 MSA로 나눈 의미가 없다고 느꼈습니다. 이후 서비스별로 배포 파이프라인을 따로 구성하고 나서야 독립적인 배포가 실제로 무엇을 의미하는지 체감했습니다.
저는 서비스 간 통신을 동기로 할지 비동기로 할지가 가장 중요하다고 생각합니다. 처음엔 모든 서비스 호출을 동기로 구현했는데, 한 서비스가 느려지면 요청을 보낸 다른 서비스까지 함께 느려지는 문제를 겪었습니다. 급하지 않은 처리는 메시지 큐를 활용해 비동기로 바꾸면서 전체적인 응답 속도가 나아졌습니다.
같은 실수가 반복돼요. 이것만 피해도 절반은 갑니다.
진짜 면접은 두 번째 질문부터예요. 이 답 뒤에 따라올 법한 것들.