본문 바로가기

cloud

[NCP] Naver Cloud Platform 활용기 - (1) server 생성하기

Naver Cloud Platform 활용기 - (1) server 생성하기
Naver Cloud Platform 활용기 - (2) Cloud DB for MySQL 생성하기
Naver Cloud Platform 활용기 - (3) docker 기반 애플리케이션 배포
Naver Cloud Platform 활용기 - (4) pinpoint를 활용한 시스템 모니터링
Naver Cloud Platform 활용기 - (5) jmeter를 활용한 load test와 pinpoint 모니터링

 

Server

Server는 물리적인 서버 자원을 구매하지 않고 클라우드 환경에서 서버를 생성하고 사용할 수 있게 해주는 네이버 클라우드 플랫폼의 서비스입니다. 서버의 빠른 생성을 지원하고, 사용한 만큼만 비용을 지불하면 되기 때문에 인프라 운영에 대한 부담을 덜고자 하거나 일시적으로 많은 서버 자원이 필요한 경우에 효율적으로 사용할 수 있습니다.

 

네이버 클라우드 플랫폼 사용가이드에서 서버를 위와 같이 설명하고 있다. aws, azure 등 클라우드 서비스를 사용하는 가장 큰 이유는 물리적인 서버를 직접 구축할 필요 없이 자원이 필요한 경우에 필요한 만큼 사용하고 지불하기 위함이다.

다른 클라우드 서비스도 있지만 ncp에서 최초 가입 시 무료 크레딧을 지급해주어 활용하였다.

이번에 springboot 2.7.14, mysql 8.0.31 기반의 토이 프로젝트를 진행하면서 클라우드 환경에 서비스를 배포하고 다음의 목표를 달성하고자 했다.

1. 클라우드 서버 활용

2. 클라우드 DB 서버 활용

3. docker 기반 애플리케이션 배포

4. github actions를 활용한 ci/cd pipeline 구성

5. pinpoint를 활용한 시스템 모니터링

6. 성능 테스트

이번 글에서는 첫번째로 naver cloud platform에서 서버를 생성하는 방법에 대해서 알아본다.

 

Server 생성

전체 설명은 다음 링크에 자세히 나와있다. https://guide.ncloud-docs.com/docs/server-create-classic

ncp에 회원가입을 하고 콘솔에 들어가면 다음과 같이 왼쪽 탭에 region, platform, services 목록들이 있다. server는 services - compute 하위에서 진입할 수 있다.

 

platform은 Classic과 VPC 중 선택할 수 있는데, VPC를 활용하면 물리적으로 격리된 네트워크 환경을 구성할 수 있고 용도별로 네트워크를 구성하는 등의 장점(https://www.ncloud.com/product/networking/vpc)이 있다고 한다. 토이 프로젝트에서는 별도 네트워크 설정 등이 불필요하기 때문에 Classic 플랫폼으로 선택하였다.

이미 생성해둔 서버가 있어 목록이 보이는데, 초기 Server 탭에 접근하면 별도의 서버가 존재하지는 않는다. '서버 생성'을 눌러 Server를 생성하기 위한 설정을 할 수 있다.

 

서버 생성을 누르면 다음과 같이 디스크 크기, 이미지 타입, OS, 서버 타입을 선택할 수 있다. 기본 디스크 용량과 OS 전용으로 Ubuntu 18.04를 선택하였다. 서버 타입은 단순 개발 서버이기 때문에 Compact 정도를 선택해도 괜찮지만 시간당 비용이 몇 백원으로 저렴하여 Standard로 선택하였다. (무료로 제공하는 Micro 서버를 한 번 사용해보았었는데 1코어에 1GB mem은 견디기가 쉽지 않았다..)

https://www.ncloud.com/product/compute/server 에서 제공되는 서버 타입 설명을 보면 각 타입에 따라 어떤 용도로 사용할 수 있는지 간단하게 설명되어 있다.

 

서버 이미지를 선택하고 나면 서버 설정을 할 수 있다. 필요한 스토리지와 서버 세대를 선택한다. 서버 세대는 다음과 같은 차이가 있다고 한다. 3세대는 VPC 서버를 구성할 때 사용할 수 있다. 필요한 만큼의 코어와 메모리, 디스크 용량을 선택하고 요금제를 선택한다. 단기간 사용할 예정이므로 시간 요금제로 1개 서버에 대해 반납 보호는 별도로 설정하지 않았다.

  • 2세대(g2) 서버는 1세대 서버 대비 CPU와 네트워크 등에서 성능이 개선되고 안정성이 향상된 버전입니다. XEN 하이퍼바이저 기반의 서버로 HDD, SSD 기반의 스토리지를 사용할 수 있습니다.
  • 3세대(g3) 서버는 KVM 하이퍼바이저 기반의 서버로 신규 출시된 FB1 (Fixed BlockStorage), CB1 (Common BlockStorage) 스펙의 스토리지를 사용할 수 있습니다.

 

이후 인증키 생성을 진행한다. 이름을 적절히 선택 후 생성하면 pem 파일을 다운로드 할 수 있는데, 추후 관리자 패스워드 등을 알아내는 데 사용하므로 잘 저장해둔다.

 

ACG는 Access Control Group으로, aws로 치면 인바운드, 아웃바운드 규칙을 정하는 것이다. 일전에 aws를 활용해서 인스턴스를 만들었을 때는 인스턴스당 규칙을 별도로 정의해야 했는데, acg로 구성하면 재사용할 수 있어서 편리한 듯 싶다. 특정 서버들에 acg를 적용만 하면 동일한 규칙을 적용받게 할 수 있다. 자세한 설정 방법은 링크를 참고한다. 

우선은 http, https port를 열기 위해 80, 443 포트를 설정하였다. 추후 ssh 접근을 허용하기 위해 22 포트도 열어두었다. 접근 소스에 설정하는 ip는 제한적으로 설정하는 것이 맞지만, 일단은 0.0.0.0으로 모든 소스에서의 접근을 허용하였다. 특히 ssh 접근 소스는 myIp를 클릭하면 내가 현재 사용하고 있는 네트워크의 public ip가 입력된다. google에 'what is my ip'라고 검색하면 나오는 ip와 동일하다.

https://guide.ncloud-docs.com/docs/server-acg-classic

 

최종적으로 서버를 생성한 뒤 수 분을 기다리면 초기 화면에서 보았던 서버 목록에서 생성한 서버를 확인할 수 있다.

 

Server 접속

putty 등을 활용할 수도 있지만 맥북 terminal로 단순히 ssh 접근을 통해 서버에 접속해보았다.

들어가기에 앞서 공인 IP를 설정하도록 한다. Server 목록에 보면 Public IP 탭이 있는데 해당 탭에 들어가면 다음과 같이 public IP를 생성할 수 있고 인스턴스 당 하나의 공인 IP를 할당할 수 있다.

https://guide.ncloud-docs.com/docs/server-publicip-classic 링크를 확인하면 상세한 설명을 볼 수 있다.

public IP는 생성하면 그만큼 돈을 내야 한다.. 활용하지 않는다면 반납해두는 것이 좋다.

추가로 주의사항이 있는데 다음과 같이 아래 port가 포트포워딩에 먼저 할당되므로 공인 IP에서는 해당 port를 동시에 사용할 수 없다.

  • 공인 IP와 포트 포워딩을 동시에 사용하는 경우, 22(Linux), 3389(Windows) 포트가 포트 포워딩에 먼저 할당되기 때문에 공인 IP에서 해당 포트를 사용할 수 없습니다. 공인 IP에서 22, 3389 포트를 사용하려면 해당 서버의 포트 포워딩 설정을 삭제해 주십시오.

 

서버에 접근하기 위해서는 기본적으로 관리자 패스워드가 필요하다. 관리자 패스워드는 다음의 '서버 관리 및 설정 변경'에서 '관리자 비밀번호 확인'을 통해 확인할 수 있다.

 

이후 서버 생성 시 저장해 둔 pem 키를 끌어다 놓으면 초기 관리자 비밀번호를 확인할 수 있다.

 

위의 서버 설정에 보면 포트포워딩 정보가 있는데 해당 ip를 이용해도 되고, 공인 IP를 설정할 경우 해당 IP로 ssh 접근을 할 수가 있다. 위에서 말한 것처럼 포트포워딩과 공인IP ssh port를 동시에 사용할 수는 없다.

terminal에서 다음과 같이 ssh 접속을 한다. 우선은 공인IP에 ssh 22 port를 열어두었기 때문에 공인IP로 접속해본다. 이후 'passwd'로 적절히 비밀번호를 변경한다. root가 아닌 새로운 사용자를 새로 생성하여도 무방하다.

ssh root@{public ip}
root@{public ip}'s password: {관리자 비밀번호를 입력한다.}

 

마치며

AWS EC2 instance와 비교해서 좀 더 손쉽게 접근할 수 있었다. 사용가이드도 좀 더 친절하고 아무래도 한국어 인터페이스가 훨씬 거부감이 덜한 듯하다. 엔터프라이즈 레벨에서 활용하는 기술과 기능에 대해서는 사용해보지 않아 비교가 어렵지만 토이 프로젝트를 배포하고 클라우드 학습을 위해서는 관련 지식을 갖고 있지 않은 사람이 활용하기에는 훨씬 용이하다고 느꼈다.