디프만과 함께하는 우당탕탕 NCP 적용기

BlackBean99·2023년 7월 31일
4

후기

목록 보기
4/5
post-thumbnail

디프만 프로젝트에서 NCP 를 지원 받아 프로젝트를 진행했습니다.
실제로 우리 서비스인 왓나우를 개발하기 위해 클라우드를 무엇을 사용했는지 간단히 알아보겠습니다.

일단 서비스 아키텍처 입니다.

Git Action을 사용하면서 모든 컨테이너 관리 및 서버 관리를 NCP 를 통해서 했습니다.
AWS 만 써온 나에게 NCP 를 사용하는건 딱히 거부감은 없었지만 처음 써보는 거라 어색할 줄 알았습니다만 써보니 또 좋았던 것 같습니다.

NCP(Naver Cloud Compute Platform)란

가상 컴퓨팅 환경을 제공해주는 서비스 AWS 처럼 컴퓨터를 빌려주는 server 뿐 아니라 다양한 네트워크 관련 서비스 말고도

뭐가 지원하는게 엄청 많습니다. 더군다나 AWS 에서 느껴보지 못했던 한글로 클라우드를 이렇게 쓸 수 있다는 것 만으로도 사용성이 정말 많이 좋아졌습니다.

각설하고 NCP를 사용하면서 좋았던 점들과 아쉬웠던 점들을 솔직 후기 담아보겠습니다.

1. CA 세팅


Https 세팅을 하기 위해 SSL 인증서를 발급하는데 적용을 CLI 가 아닌 이렇게 GUI 로 할 수 있다는 점은 참 편리했던 것 같습니다.
물론 그냥 하라고 하면 할 수는 있는데 이렇게 플랫폼을 이용하니 참 편리했던 것 같습니다.

2. 로드밸런서와 IDS, 모니터링

로드밸런서를 서버에 붙이고 알고리즘도 이렇게 편하게 관리할 수 있다는 점도 장점인 것 같습니다.
실제로 개발해서 직접 하려고 하니 어지러운데 클라우드 서버 쓸때는 이런 네트워크 관련된 VPC 나 보안정책 설계하는 것도 참 편리해집니다.
실제로 이런 트래픽 관련된 통계 페이지도 제공을 해줘서 별도의Grafana 나 모니터링을 디테일하게 할 필요도 없습니 rㅏ..

또한 실제 서비스에서 제일 만족했던 부분은 IDS 였던 것 같습니다.

서비스 운영중 이렇게 공격받은 걸 알림으로 제공해주니 또 따로 대처 관련된 코딩을 못해서 걱정했었는데 핸드폰으로 알림까지 정말 이런 보안 관련된 부분은 칭찬해주고 싶습니다. 아니 왜 공격을 해대는거야..

3. Object Storage


AWS 의 S3 를 대신하여 이용할 수 있는 CDN 서비스 입니다. S3 코드를 작성하고 있는데 플랫폼을 변경할 수 있는지 우려스러운 개발자분들도 많아 보이는데 꼭 그렇지만은 않아요

오브젝트 스토리지는 Amazon S3와 호환되는 API를 제공합니다. S3를 지원하는 다양한 사용자 도구를 이용하여 오브젝트 스토리지로의 데이터 저장 및 관리를 편리하게 할 수 있습니다. 또한 서비스의 데이터 저장소로 Amazon S3 를 활용 중인 경우에도 코드 수정 없이 오브젝트 스토리지를 이용하여 동일한 서비스를 제공할 수 있습니다

그래서 기존에 AWS 를 쓰시는 분들도 NCP를 쓸 수 있다고 생각할 수 있으면 좋겠습니다. 저희 이미지 관리도 이걸 이용해서 개발하고 있습니다.

4. Container Registry

DockerHub를 사용하지 않고 별도로 Container Registry 를 사용하여 서버 Image 를 관리했습니다.

CI과정에서 빌드해서 이미지를 Container Registry 에 push 하고 나서 CD 할 때, pull 땅겨서 사용했습니다.

CD 스크립트중 일부를 가져왔습니다.
실제로 이렇게 ssh 로 NCP 에 접속해서 Container 에 있는 이미지를 Pull 땅겨서 빌드해서 올렸습니다.

      - name: connect ssh
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: root
          key: ${{ secrets.KEY }}
          port: ${{ secrets.PORT }}
          script: |
            echo "${{ secrets.NCP_SECRET_KEY }}" | docker login -u "${{ secrets.NCP_ACCESS_KEY }}" --password-stdin "${{ secrets.NCP_CONTAINER_REGISTRY }}"
            cd ~/src/ubuntu
            echo "start docker-compose up"
            sudo docker compose -f ~/src/ubuntu/docker-compose.dev.yml pull
            WHATNOW_VERSION=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep 'whatnow-api' | cut -d ':' -f 2-)
            sed -i "s/WHATNOW_VERSION=.*/WHATNOW_VERSION=$WHATNOW_VERSION/" .env
            sudo docker compose -f ~/src/ubuntu/docker-compose.dev.yml --env-file .env up --build -d
            echo "prune images"
            sudo docker system prune --all -f

git secrets 에 키랑 넣어놓고 NCP 로 CI/CD 를 관리했습니다.

이렇게 버전별로 이미지 관리하기에는 편리했던 것 같습니다.

이벤트 크레딧 공짜?


https://www.ncloud.com/main/creditEvent

초기 NCP 10만 을 지원받고 추가로 디프만에서 지원 받아 10만원 더 해서 20만원을 지원받고 추가 요청해서 70만 크레딧을 추가 지원 받을 예정입니다. 사실 학생 입장에서 아무리 프리티어라도 클라우드 요금은 부담스러운데 이렇게 많은 지원 받아서 서버 운영하니까 너무너무 좋았던 것 같습니다.

초기 사용자들도 10만 크레딧 지원 받을 수 있으니까 한번 써보시는 것도 좋을 것 같아요.
특히 서버개발자인 제 입장에서 Naver PinPoint 가 APM 계에서 엄청 뭐랄까 에르메스라고 소문나서 저도 한번 써보고 싶었는데 나중에 더 지원 받으면 꼭 써보고 싶습니다.
근데 개인적으로 서버 비용이 AWS 보다는 조금 더 비싼 느낌이 없지 않아 있는 것 같습니다. 그래서 서버 선택도 가장 성능 안좋은 것으로 설정했는데 나중에 좀 서버가 커지면 변경할 예정이긴 합니다.

NCP 를 앞으로 계속 쓸건가요? (솔직 후기)

약 4개월간 NCP 와 함께 하면서 프로젝트를 진행했습니다. 사실 문제가 없다고 하면 거짓말입니다.
지도의 키워드 검색 기능만 빼고 나머지 지도 기능 전부 NCP 로 넘어왔습니다. 그래서 키워드 검색은 클라우드랑 별개로 운용되는 것 같구요
Naver Map SDK 를 제공해줘서 프론트 분들은 좌표계 변환을 간단하게 할 수 있는데 서버측은 SDK 를 쓸 수가 없으니 아이나비나, Tmap API 등을 이용해서 좌표계를 변환해야 했습니다. 저는 그걸 직접 해보겠다고 난리치다가 된통 혼났죠..
아직 지도 부문은 좀 더 개선이 필요할 것 같습니다. 서버만을 위해서 라기에는 다른 플랫폼들이 지원하는 것들을 지원하지 않아서 아쉬웠습니다.

나머지 서버 운영을 위해서 필요한 서비스들은 비용 말고는 그 UX 는 대부분 만족했던 것 같습니다. 사실 한국의 클라우드라고 해서 별 기대는 안했는데 정말 만족했습니다. 가비아 같은 DNS 서비스처럼 자체 도메인 발행 기능도 통합되면 좀 더 좋겠다는 생각이 들었습니다.

다들 10만원 지원 받으니까 한번 써보시는 것 저는 적극 추천합니다! ㅎ

서버를 운영하게 비용 지원해준 NCP 회사와 디프만 13기 운영진분들에게 감사하다는 말 전하고 싶습니다. 이제 디프만 14기 운영진이 된 제가 그 클라우드의 뜻을 이어보도록 하겠습니다. 감사합니다 ㅎㅎ

profile
like_learning

0개의 댓글