NCP 회고록

알파로그·2023년 6월 26일
0

Linux 와 Docker

목록 보기
27/28

1. NCP 를 사용하기 전

이 글은 멋쟁이 사자처럼 백엔드 스쿨 3기에서 지원받은 30만 원의 크래딧을 사용해 프로젝트를 진행한 2개월간의 회고이다.

지금으로부터 약 2개월 전 클라우드에 대해 기본 지식이 없었을 때 인프라 수업이 시작되었다.

그 당시에 멋사에서 만난 훈련생 분과 이미 작은 프로젝트 (BAEKER)를 진행하고 있었기 때문에 수업 내용을 바탕으로 같이 만든 프로젝트를 배포해야겠다는 목표가 생겼었다.

그 당시엔 NCP 크래딧의 개념을 잘 이해하지 못했고,
AWS 의 프리티어의 인스턴스를 대여해 프로젝트를 배포했다.

  • 이 때 EC2 를 사용하며 RDS 의 존재도 알게되어 프로젝트에 적용시켰었다.

그런데 우리만 사용하는 아주 작은 규모의 미니 프로젝트임에도 불구하고 한 번씩 과금이 발생해 소득 없이 공부만 하는 우리의 입장에선 적은 금액도 부담스러웠고,
언제 갑자기 많은 돈이 과금이 될지 모른다는 생각에 과감한 시도를 하는 것이 부담되었다.

2. NCP 입문

어느 날 강사님이 크래딧에 대해 한 번 더 리마인드해 주셨고 그제야 크래딧이 무엇을 뜻하는지 의미를 알게되었다.

정규 수업이었던 GRAMGRAM 뿐만 아니라 미니 프로젝트 BAEKER 도 배포를 했다.

  • 🔗 BAEKER Repository
  • 수업 내용을 기반으로 docker container 로 nginx 를 띄워 url 에 따라 요청을 각각의 포트로 전달하는 아키텍처로 구현했다.

하지만 문제가 발생했다.

AWS 의 EC2 에서는 Github action 을 사용한 CD 로 배포를 진행하고 있었는데,
NCP 서버에서 Git action 의 runner 를 다운로드 하는 과정에서 권한 문제가 발생하고 말았다.

  • 그 때 NCP 서버를 잘못 세팅한줄 알고 며칠에 걸처 4~5번 정도 반납과 대여를 반복했었다..

아무튼 이 문제를 해결하고 우리는 Git hub action 을 사용해 정상적으로 자동 배포까지 구축을 완료했다.

3. NCP 다양한 시도

크고 작은 문제들을 겪으면서 NCP 뿐만아니라 인프라에 대한 이해도가 높아지는 게 체감이 되어 많은 성취감을 느꼈다.

지금으로부터 약 1달 전 정규 수업과정에서 진행하는 team project 가 시작되었고,
이전의 경험을 바탕으로 팀에서 내가 인프라를 맡기로 했다.

예전에 기록해둔 내용을 바탕으로 무리 없이 서버를 배포했고 NCP 에서 제공하는 DB 서버를 이용하려고 했지만,
가장 낮은 사양을 선택해도 월에 약 10만원 정도 비용이 발생해 DB 는 AWS 의 RDS 를 사용했다.

배포가 완료되고 팀원 중 한 분이 배포 서버의 log 에 한국시간이 찍히지 않는 걸 발견하셨고,
문제를 해결하기 위해 dockerfile 의 환경 변수를 통해 배포 서버의 time zone 을 변경할 수 있다는 사실도 새롭게 알게 되었다.

다시 BAEKER 로 넘어와서 2장에서 배포한 BAEKER 는 모놀리식의 ssr 프로젝트였지만,
BAEKER 를 MSA 로 전환하자는 목표가 생겼다.

각 마이크로 서버를 NCP 에서 모두 대여하게 되면 비용이 너무 많이 청구될 것 같아 하나의 NCP 서버에서 docker container 를 사용해 마이크로 서버를 분리하기로 했다.

하나씩 하나씩 Rest Controller 로 전환하며 배포를 진행했고,
마지막 서버를 띄우는 순간 NCP 서버가 터저버리는 문제가 발생하게 되었다.

  • 문제는 메모리 사용량에 있었다.

작은 프로젝트더라도 너무 많은 application 이 띄워 저있었고,

그 외에 kafka, zookeeper, prometeus, grafana 와 같은 툴들도 한몫을 차지했다.

마로 스케일 아웃이나 업을 진행하기 전 메모리 최적화를 위해 고민했다.

그중 git hub action 의 runner 에서 많은 메모리를 사용하는 것을 확인했고 문제를 해결하기 위해 구글링을 하던 중 organizations 에 포함된 repository 는 각각 runner 를 연결할 필요 없이 organization 에서 한 번의 연결로 각각의 repository 를 연결시킬 수 있다는 사실을 알게되었다.

이 방법으로 메모리 사용량이 눈에 띄게 줄어들었지만 아직 안심할 정도의 수준은 아니었다.

고민을 하던 중 쿠버네티스를 도입하고 AWS 와 GCP 의 무료로 재공하는 서버들을 모두 모아서 메모리 이슈를 해결해 보기로 했다.

  • 이 외의 해결 방법으로 NCP 사양을 높이는 방법도 알아봤다.
    • 서버를 하나 더 대여하는 것보다 효율은 좋았지만 이 방법은 어쨌든 지금 발생하는 비용보다 더 많은 비용이 발생하기 때문에 최후의 방법으로 선택하기로 했다.

4. 결론

아직 쿠버네티스를 적용해 메모리 이슈를 해결하지는 못했다.

  • 지금 하는중이다.

결과적으로는 수업과정 중에 지원받은 30 만원의 크래딧 덕분에 금전적인 걱정 없이 원하는 아키텍처를 적용하고 있고,
그러다 보니 30만원도 거의 바닥이 나버렸다.

앞으로의 계획은 마지막 크래딧인 70만원 크래딧을 지원받고 지금 진행중인 프로젝트의 완성도를 높이고 모든 크래딧이 소진될 때까지 취업을 완료하는 것이다.

마지막 크래딧까지 지원받아 원하는 목표를 달성하고 싶다.

profile
잘못된 내용 PR 환영

0개의 댓글