Skip to content

[INFRA] 안정적 운영을 위한 인프라 구성 변경

이은비 edited this page Mar 2, 2023 · 1 revision

배경

명식이는 인문캠퍼스에 한해 2022.12 기준 유저 수 약 800명을 보유하고 있다. 다가오는 개강을 맞이해서 신입생의 유입과 자연캠퍼스와 통합하며 신규 유저 유입이 기존 유저 수만큼 될 것으로 예측하고 있다. ver1에서는 단순히 학식 메뉴를 조회하는 기능만을 제공했었다. ver2에서는 서비스의 확장으로 리뷰 남기기, 근처 맛집 리스트 조회, 나만의 찜꽁 리스트 기능이 추가된다.

고민 Point

  1. 기존 인프라 환경이 새로운 유저 유입을 감당할 수 있는가

명식이 인프라V1 (1)

AS-IS 인프라 구성을 보면, 개발환경과 운영환경을 분리하여 구성했다. 개발환경에서 테스트를 위해 만들어지는 데이터가 운영환경에 영향을 미칠 수 있기 때문에 DB 서버까지도 분리 구성을 하였다. 하지만 운영 서버가 1대 뿐이어서 신규 유저의 유입이 많아졌을 때 서버가 다운되지 않고 운영될 수 있는지에 대한 확신이 없다.

  1. 제한된 가용 리소스

명식이 프로젝트를 만들어가는 구성원이 대학생 혹은 취준생의 신분이기 때문에, 서버 비용에서 자유로울 수가 없다. 최소한의 리소스를 사용해 최대의 효율을 이끌어내야 하기에 서버의 추가 확장은 조심스러울 수 밖에 없다.

개선 방향

  1. 운영환경 서버 이중화 및 웹서버 도입

명식이  인프라

TO-BE 인프라 구성은 위와 같다. 기존의 가용 서버 3대를 좀 더 효율적으로 사용하기 위해 Jenkins 호스팅용 서버를 Nginx 엔진을 탑재한 웹서버로 대체하였다. CICD 파이프라인은 Jenkins에서 Github Actions로 변경하였다. 웹서버를 도입한 이유는 WAS의 부하 분산이 가장 큰 이유이다. 가장 효과적이고 안정적인 운영을 위해서는 웹서버도 이중화 구성을 하는 것이라는 점을 알지만, 비용의 한계로 현재는 1대로만 운영하기로 결정하였다.

개발환경의 서버를 운영환경으로 옮겨 WAS를 이중화 구성하였다. 개발환경의 서버를 없앤 이유는 프론트엔드 측에서 API 연동에 개발환경 서버가 아닌 운영환경의 서버를 사용하고 있어 사실상 개발환경의 서버가 유휴 상태였기 때문이다.

  1. 모니터링 시스템 도입

ver1에서는 단순 조회 기능만을 제공했기 때문에, 유저가 서버로 보내는 요청을 보내는 API가 많지 않았다. 하지만 ver2에서는 조회 기능 외에도 유저로부터 유의미한 정보를 받아 DB에 저장하는 기능이 추가됨에 따라 API의 개수가 늘어나고 요청 역시 다양해진다. 서버에 가해지는 트래픽을 수치적으로 확인하고 유저가 가장 많이 사용하는 서비스와 신규 서비스에 대한 반응을 확인하고자 모니터링 시스템을 도입하기로 결정하였다.

서버가 메트릭 정보 수집과 요청 수 확인을 위해 운영 서버에 도커를 이용해 프로메테우스와 그라파나를 컨테이너로 구동하고 있다. 관리자에 한해 모니터링 시스템에 접근이 가능하며, 이 정보들을 이용해 앞으로의 서비스 확장과 인프라 구성을 개선시켜나갈 계획이다.