로드 밸런서 + 서비스 장애 격리 + 캐시 활용 + 로그·메트릭 관측 구조 경험
졸업 프로젝트에서 특정 서버가 죽어도 서비스가 계속 동작하는 구조를 처음 설계해봤습니다. 중복화 측면에서는 단일 서버에 의존하지 않도록 인스턴스를 여러 개 띄우고 앞에 로드 밸런서를 두는 방식을 배웠습니다. 격리 측면에서는 하나의 서비스 장애가 다른 서비스에 전파되지 않도록 경계를 설계하는 것이 중요하다는 걸 경험했습니다. 캐시 측면에서는 DB에 자주 가는 쿼리 결과를 캐시에 올려두면 전체 응답 속도와 DB 부하를 동시에 줄이는 효과가 있었습니다. 관측 측면에서는 문제가 생겼을 때 어느 레이어에서 발생했는지 추적할 수 있는 로그와 메트릭 구조를 갖추는 게 중요하다는 걸 배웠습니다. 고가용성은 장애 발생을 막는 게 아니라 장애가 나도 서비스가 지속될 수 있게 설계하는 것이라는 걸 배웠습니다.
확장성은 처음부터 크게 설계하기보다 확장이 필요할 때 무엇을 바꿔야 하는지 미리 생각해두는 것이라는 걸 그때 느꼈습니다.