콘텐츠로 건너뛰기

네이버 클라우드 플랫폼으로 서비스 구축하기 – Overview

네이버 클라우드 플랫폼 서비스를 활용하여 서버를 구축해보겠습니다. 일반적으로 서비스 초기에는 큰 자원이 필요하지 않기 때문에 확장성을 기반으로 하여 최소한의 구성으로 서버를 구축하는 것을 목표로 합니다. 따라서 서버를 구축하는데 있어 소규모 웹 사이트 레퍼런스 기반으로 필요한 서비스를 추가하는 방향으로 진행하겠습니다.

레퍼런스 아키텍처

네이버 클라우드는 다양한 레퍼런스 아키텍처를 제공하고 있습니다. 그 중에서 서비스 초반에는 소규모 웹사이트 레퍼런스를 참고하여 서비스를 구축하겠습니다.

소규모 웹 사이트 레퍼런스

왜 네이버 클라우드 플랫폼을 사용하나요?

AWS, Azure, Google Cloud, Vultr 등 다양한 클라우드 서비스를 제치고 네이버 클라우드 플랫폼을 선택한 이유는 간단합니다. 이 글은 클라우드 기반으로 서비스를 막 시작하는 익숙하지 않은 사용자를 대상으로 하고 있기에 비용 절감이나 성능 측면 보다는 쉽게 구축하고 운영하는 것을 목적으로 하고 있습니다. 이런 측면에서 네이버 클라우드 플랫폼은 서비스 설정 화면이나 매뉴얼이 이해하기 쉬운 한국어로 되어 있어 클라우드 서비스를 잘 모르는 사람도 빠르게 적응하여 사용할 수 있습니다. 그리고 문제가 발생했을 때 다른 클라우드 서비스보다 빠르고 쉽게 지원을 받을 수 있습니다.

어떤 서비스를 하려고 하나요?

가장 일반적인 형태의 앱 애플리케이션과 웹서버 구성으로 서비스를 하려고 합니다. 아래 그림과 같은 형태로 구축하려고 합니다.

  • Server
    • 말 그대로 서비스를 올릴 수 있는 서버
    • Production Server 및 Staing Server로 구성
    • 서비스 초반에는 하나의 서버에 FE 및 BE 서버를 올리고 일정 시점까지는 auto scaling 적용
    • 고도화 시점에서 FE 서버 및 BE 서버 분리한 형태로 구성
  • Cloud DB for MySQL
    • 데이터베이스 서버
    • 서비스 초반에는 단일 서비스로 운영
    • 고도화 시점에서 Master-Slave 형태로 확장
  • Global DNS
    • 서브 도메인을 Load Balancer에 연결하기 위함
  • Load Balancer
    • HTTPS 인증서 처리
    • 서브 도메인을 Server 특정 포트로 연결
    • Load Balancing
  • Object Storage & CDN++ & Image Optimizer
    • 이미지 및 동영상 처리
    • Cloud 로그 처리

네이버 클라우드에서 어떤 서버를 선택해야 할까요?

네이버 클라우드에서는 모든 서비스를 Classic 플랫폼과 VPC 플랫폼 형태로 제공하고 있습니다. 쉽게 Classic 플랫폼은 서비스 규모가 작고 네트워크 설정을 크게 신경 쓰지 않을 때에 적합하고 VPC 플랫폼은 복잡한 구성에서 네트워크를 직접 설계하고 상세하고 높은 수준의 보안 설정을 하는데 적합합니다. VPC에 대한 자세한 설명은 네이버 클라우드 플랫폼 블로그에서 확인할 수 있습니다.

보통 서비스를 만들고 초기 운영하는데 그리 큰 자원은 필요하지 않고 나중에 사용자가 늘어나서 서버 확장이 필요할 때 규모에 맞게 서비스를 구성하면 되기 때문에 초반에는 Classic 플랫폼에서 Compact-g1 서버를 사용해도 큰 문제가 없습니다. 다만 Compact 서버의 경우 CentOS 7 버전 또는 ubuntu 18 버전만 지원하기 때문에 개발 환경에 따라서 선택할 수 없을 수 있습니다.

그림. Classic 플랫폼의 Compact 서버
그림. VPC 플랫폼의 Standard 서버

운영체제에 따른 Node 버전 이슈

사실 저도 처음에는 Compact-g1 서버로 UI 서버, API 서버, 테스트 서버 총 3대의 서버를 구축하려고 했습니다. 근데 생각하지 못한 난관에 부딪혔습니다. Compact-g1 서버는 CentOS 7 버전 및 ubuntu 18 버전만 지원하고 있습니다.

제가 개발한 환경은 Node 18 및 React 18 버전으로 CentOS 7 버전 및 ubuntu 18 버전에서 Node 18 버전을 설치할 수 없습니다. 하루 정도 gcc, glib 버전 등을 올리고 해결할까 고민하다가 안정성 문제 및 이렇게까지 변경하는 것은 쉽게 운영할 수 있다는 초기 취지와는 너무 다른 것 같아서 포기했습니다. ㅠ_ㅠ..

Node 18 버전을 사용하기 위해서는 VPC 플랫폼의 Standard 서버를 사용하거나 아니면 Node 16 버전으로 낮추고 Compact-g1 서를 사용하거나 둘 중 하나를 선택해야 했는데 2024년 03월 기준으로 지원 종료된 Node 16 버전을 사용할 수 없어 VPC 플랫폼의 Standard 서버를 사용하고 초기 서버를 3대에서 2대로 운영하기로 결정하였습니다.

운영 서버 및 테스트 서버 ( UI 및 API )

  • Standard s2-g2-s50 ( vCPU 2개 / 8GB )
  • ubuntu 20.04
  • Node 18
  • React 18

Cloud DB for MySQL

사실 DB가 가장 많은 고민이 필요한 부분인데 DB를 사용하기 위해서는 서버에 MySQL을 직접 설치하거나 Cloud DB for MySQL 서비스를 이용하면 됩니다. 저는 개발 서버는 MySQL을 직접 설치하여 사용하고 운영 서버는 Cloud DB for MySQL 서비스를 사용하기로 했습니다. Cloud DB for MySQL을 사용하는 이유는 완전 관리형 상품으로 별도로 데이터 측면에서의 관리만 하면되고 백업 및 복구를 쉽게할 수 있기 때문에 운영 리소스가 적게 들어가기 때문입니다. 서비스 이전에는 서버에 MySQL을 설치하여 사용하다가 서비스 시점에서 Cloud DB로 변경하는 걸 권장합니다.

Architecture

관련 포스트

참고

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다