현재 단계에서는 프론트 설계 및 개발 작업이 들어가지 않고 프로젝트의 백엔드 기본 crud 및 기능 추가만 된 상태로 api 들의 성능을 체크를 로컬환경에서만 아닌 실제 서비스들어갈때 클라우드 환경에서 테스트 하기위해 그리고 CI/CD 환경을 구축하기 위해서 서버 구축의 필요성이 생겨 서버를 구축하고자 한다.
클라우드서비스를 이용하기위해 서비스중인 회사들을 살펴보면
대표적인 서비스 회사
amazon의 aws
google의 GCP
microsoft의 azure 등이 있다.
나는 여기서 google의 GCP를 선택을 하였다.
GCP를 선택한 이유는 aws와 GCP를 개별로 경험해본 기억 그리고 프로젝트를 하면서 서버비 지원등을 고려 해보았을 때
aws는 대중적으로 사용하는 서비스고 구글링 기준으로 사용하는 유저들이 많아 정보가 많다 하지만, 웬만한 서비스들은아마존 계정 처음기준 프리티어를 1년기준으로 제공해주지만 vm은 프리티어 기준 1코어 cpu 1기가램 최대 30기가의 storage을 무료로 제공을 해준다.
그리고 GCP는 구글 계정으로 처음으로 구글클라우드 서비스를 사용시 무료계정으로 300달러의 크레딧을 3달간 제공해주어 그 돈에 맞게 모든서비스를 사용할 수있다. 300달러가 기한내에 끝나면 일반계정으로 돌리지 않는이상 추가 비용 지출은 없다. 또한 구글클라우드 또한 aws대한 서비스들은 gcp에서도 내가 필요한 선에서는 지원을 한다. 성능 적으로나 비용적으로 부담없이 개발 할 수 가 있을 것 같아서 GCP를 선택하게 되었다.
초기 단계의 프론트 없이의 구상은 사진대로 구상하였지만 중간단계의 구상도는 변경이 되었다.
GCP의 Computing Engine을 이용하여 가상 vm을 띄운뒤 도커를 설치하여 스프링 부트 앱 과 mysql redis 를 개별적으로 동작하게 만든다.
깃헙 액션의 CD 워크플로우가 동작하게 되면 vm의 was서버 컨테이너가 동작 중이면 컨테이너를 내리고 이미지를 지운 후 최신 이미지를 받아와 was서버 컨테이너를 띄운 식의 워크플로우를 생각 했다.
이러면 배포를 자동화를 할 수 있지만,
배포가되면 서비스가 중단에 끊긴다는 단점이 있다. 이러한 점 은 추후 개발 시간이 생기면.. 로드밸런싱을 통한 무중단 배포까지 의 설계를 생각 해 봐야할 것 같다.
본론으로 와서
Google Cloud를 접속하여 로그인 후 프로젝트를 생성한 뒤 Compute Engine 이라는 카테고리에 vm 인스턴스 탭으로 가서
가상머신을 생성할 수가 있다.
인스턴스 생성에서 인스턴스 이름과 리전 영역을 선택할 수 있다.
인스턴스 이름은 vm을 식별하기 위한 이름으로 나는 우리가 사용하려는 목적에 맞게 이름을 구성해 주었다.
그리고 리전은 그 인스턴스가 만들어지는 지역을 뜻하는데 서비스할 지역에 맞기 골라주는 것이 좋다.
만약 자신이 외국에서 서비스할 생각이라면 리전을 그 나라에 맞게 또는 그 나라와 가깝게 지정해 주는 것이 좋다.
가상머신의 사양을 지정해주면 되는데 이러한 구성 설계는 프로젝트를 누구에게 그리고 최대 몇명이 동시에 접속할거다 라는 초기 설계 에 맞춰서 구성을 해주는 것이 좋다.
나는 초기단계에 맞춰 500명의 사용자가 동시에 요청을 하면 처리를 할 수 있을 정도의 수준과 하나의 서버에 웹서버 컨테이너와 mysql컨테이너 redis 컨테이너를 한번에 올리고자 하는 생각으로 2코어와 16기가의 램을 생각하였지만 추후 단계에서 2코어 8기가로 낮추게 되었다.
추가적으로 제대로된 사양과 유형을 보고 싶다면 아래링크를 참조하는것이 좋다.
https://cloud.google.com/compute/docs/machine-resource?hl=ko#machine_type_comparison
간단하게 사양에 따른 용도를 설명해 주는 표를 참고해도 좋다.
이렇듯 필요한 만큼의 성능을 구성을 해야하는 점은 제일 처음으로 비용적 문제가 제일 크다. 설계 단계에서 생각 한 성능을 처음부터 크게 줘버리면 비용적으로 서버에 대한 지출이 크다. 필요없는 사양으로인한 자원낭비에 지나지 않다. 계속 모니터링하여 평균이용자가 늘어나는 만큼 그때가서 서버를 증설하면 되는 것이기 때문이다.
그 밑으로는 부팅 디스크 를 선택할 수있는데 여기서 가상머신의 운영체제와 버전 부팅디스크의 유형을 일반 하드디스크로 할것인지 ssd 로 할 것인지와 디스크 크기를 지정 할 수 있다.
그 밑으로는 방화벽 설정으로
웹서버를 운영할 것이기 때문에 HTTP와 HTTPS의 포트를 열어 주었다.
이렇듯 기본적으로 vm 구성을 맞추면
최종적으로 이러한 vm의 시간당 비용 과 월간 예상 비용이 나오게 되는 것이다.
이러한 설정을 끝으로 만들기를 누르면 vm에 대한 인스턴스가 생성이된다.
이러한 인스턴스가 최종적으로 생성이 되면
이러한 모습이 보일 것이다
인스턴스 이름, 리전 , 내부 ip, 외부 ip
만들어진 가상 머신에 접속하기 위하여
처음에는 연결 아래의 SSH를 누르면 SSH를 브라우저에서 연결하여 vm에 접속을 할 수 있게된다.
이러한 화면을 통하여 운영체제가 ubuntu server 인 우리가 생성한 인스턴스에 접속할 수 있다.
매번 이러한 구글클라우드에 접속하고 compute Engine에 접속하고 인스턴스 탭에 ssh를 누르는 것이 번거로워
mobaXterm을 사용하여 putty 방식의 ssh 접속으로 바로 로컬에서 할 수 있도록 해보겠다.
'내일배움캠프' 카테고리의 다른 글
내일 배움 캠프 최종 프로젝트 - 스프링부트 서버를 컨테이너로 올리기 전 준비(도커 설치) (0) | 2024.04.11 |
---|---|
내일 배움 캠프 최종 프로젝트 - GCP VM mobaXterm 접속 (0) | 2024.04.10 |
내일배움캠프 최종프로젝트 - 캐싱 적용-1 (0) | 2024.04.04 |
내일배움캠프TIL-Docker를 활용해 MySQL을 컨테이너로 띄워 사용하자 (0) | 2024.03.13 |
내일 배움 캠프 TIL -QueryDSL을 사용해서 수정일 순으로 정렬해서 가져오자 (0) | 2024.03.11 |