[NCT] 인프라 개선기 - 1. 아키텍쳐 분석

D7MeKz·2024년 1월 6일

[Project] NCT

목록 보기
1/1

들어가며

창업 동아리에서 받은 역할은 운영 중인 서비스 인프라 개선이었다. 본격적으로 작업하기 앞서 설계된 아키텍쳐가 무엇이며, 앞으로 어떻게 구축할 것인지 작성하고자 한다.

아키텍쳐 분석

간단한 모놀리식 구조라 개선하는데 많은 어려움은 있지 않아 보였다.
NCT Arch

웹서버

웹서버는 front에만 연결할 수 있도록 작성하고, front ↔ backend와 통신할 수 있도록 개선하고자 한다.


출처 - https://okky.kr/questions/1357368

아키텍쳐 개선

개선 및 추가 사항

  • Jenkins 컨테이너화

  • 안전한 키관리

  • 테스트 서버 구축

    운영 중인 서비스이므로 함부로 테스트를 할 수 없어 개인이 직접 clone해 테스트를 해야만 했었다. 인원도 많아 개인 테스트가 오히려 프로젝트에 혼동을 줄 수 있다고 생각했다. 그래서 통합된 서버 환경이 필요하다고 판단해 구축하기로 했다.

  • 모니터링 도구 추가

    현재 서버를 자체 구축하여 사용하고 있다. 물리적 환경에서의 지표를 확인하기 위해 프로메테우스랑 그라파나를 사용할 것이다.

개선 아키텍쳐

크게 4가지 영역으로 나눴다. 회색 점선은 클라이언트, 파란 점선은 개발자만 접근할 수 있는 영역으로 구분된다.
NCT arch v0.1

Dev Area

개발을 하기 위한 영역으로 개발자가 특정 브랜치에 git을 변경시키면, 젠킨스가 webhook을 활용해 자동으로 빌드하고 배포한다.

빌드 배포 시에는 아래와 같은 브랜치를 활용할 것이다.

  • release : 실제 배포 브랜치
  • test : 테스트 브랜치

Q.Jenkins를 도커에 실행시켜도 될까?
A. 쉽고 빠르게 배포하기 위해서는 Jenkins가 더 편리할 수 있다. 다만 권한 문제는 까다로울 수 있다.
출처 - https://stackoverflow.com/questions/44440164/what-are-the-advantages-of-running-jenkins-in-a-docker-container

Production & Test Area

정확한 테스트를 위해 동일 환경으로 구성했다. 한대의 서버만 사용하기 때문에 웹서버는 하나만 구축했다. 다만 개발자만 테스트 서버에 접근할 수 있도록 접근 제어가 필요하다.

production 서버는 DB가 분리된 반면에 test 서버는 DB가 컨테이너화되어 있다. 추후 DB가 별도의 서버 혹은 호스트로 분리된다는 것을 감안해서 설계도를 작성했다.

Monitoring Area

메트릭 수집 도구로 유명한 프로메테우스(Prometheus)랑 그라파나(Grafana)를 사용하고자 한다. 메트릭은 서버의 상태를 측정한 항목이나 지표를 의미한다. 프로메테우스는 메트릭들을 수집하고, 이를 시계열로 시각화해주는 도구가 그라파나라고 보면 된다.

향후 계획 중 하나로 서버 확장이 있다. 서버를 모니터링할 도구는 미리 갖춰두는 것이 좋을 것 같아서 추가했다.

Q. 프로메테우스랑 그라파나는 도커에 실행시켜도 될까?
A. 괜찮다. 모니터링 하고자 하는 대상과 가까운 네트워크에 있으면 좋다고 한다.
출처 - https://grafana.com/blog/2019/05/07/ask-us-anything-should-i-run-prometheus-in-a-container/

마치며

설계하면서 아래와 같은 궁금증도 생겼는데, 이는 공부하면서 해결할 예정이다.

  • 메트릭 분석법
  • 웹서버 접근 제어 방법
  • 아키텍쳐 이게 최선인가?

향후 계획

  • 보안
    • 접근제어
    • 안전한 키관리

참고

0개의 댓글