첫 외주 업무 프로젝트 인프라

김맥스·2023년 6월 26일

데브옵스

목록 보기
2/8
post-thumbnail

일정

  • 23.06.16.금
    • 1차 오픈에서 백엔드는 게시판 기능 요청받음
  • 23.06.17~18일
    • 주말 작업 -> 요청사항이 아직 구체적이지 않았지만 최대한 많은 기능 구현해놓고자 함
  • 23.06.19.월 ~ 23.06.23.금
    • 매일 막차, 새벽까지 작업하며 끝냄
  • 23.06.25 모종의 사유로 게시판 페이지 제거 요청
  • 23.06.26 10시 1차 오픈

개발 과정

다음 배포 & 프로젝트를 좀 더 빠르고 수월하고 꼼꼼하게 끝내기 위해 개발 과정을 기록해놓고자 함

테스트 코드 개발 및 배포 과정

  • 로컬에서 NestJS 프레임워크를 사용하여 노드 서버를 구축
  • 로컬에서 데이터베이스 서버 설치
  • 애플리케이션 초기 세팅을 미리 해두었었음(깃허브 레포 연결, 필요한 라이브러리들 설치, 스웨거, 필터 등 구현)
  • 게시판 관련 기본적엔 ERD 모델링 (TypeORM 사용하여 빠르게 마이그레이션 & 작업 진행하며 계속 수정)
  • API 구현
  • Github dev 브랜치에서 브랜치 파서 작업 후 dev브랜치에 merge
  • 어느 정도 개발 완료 후 프론트분들이 작업하기 용이하게 AWS EC2에 인스턴스를 만들어 서버를 띄우고 RDS를 만들어서 연결
  • EC2에서 해당 레포를 clone 받고 환경변수를 세팅하고 서버 구동 확인
  • PM2로 EC2 서버를 무중단 상태로 관리
    -> 언제든 스웨거를 확인할 수 있고, 그에 따라 API 테스트할 수 있음
  • 어느 정도 완성이 되어서 메인 서버를 배포해야 할 시점이 옴

메인 서버 배포 과정

  • 외주를 받고 있는 입장에서 모회사가 AWS가 아닌 AZURE를 사용한다고 하여 긴 협의 끝에 모회사가 AZURE 인프라를 구축 및 관리해주고 우리가 개발한 코드를 AZURE에 올려주기로 함
  • 인프라 구성을 간단히 설명하자면, azure의 가상 네트워크에 public 서브넷과 private 서브넷을 구분하여 두었고, 개발자는 bastion 서버를 통해 private 서브넷에 접근할 수 있게 했다. private 서브넷에서 프론트, 백 서버는 각각 2개씩만 띄워두었고 각각 로드밸런서를 통해 트랙픽을 분산시키고자 하였다. 디비도 서버가 아닌, azure 서비스로 구축해두었고, 게시판에 업로드될 이미지를 저장할 블롭 스토리지 서비스도 구축해두었다.
  • 메인 서버에 배포는 깃액션을 통해 자동화로 구현해두었다. 그 스크립트의 대략적인 내용은, 로컬에서 깃허브 메인 브랜치에 푸쉬하면 스크립트가 시작되고 바스티온 서버에 접속해서 깃 레포 메인 브랜치를 풀 받고 도커 파일을 실행하는 방식이다
profile
3년차 백엔드 개발자의 공부 기록

0개의 댓글