이제 배포(Deploy)를 해볼까?(aws,s3,ec2,RDS)

연쇄코딩마·2020년 11월 3일
0

TIL

목록 보기
13/15
post-custom-banner

들어가기전에

마지막 HA를 보았다. 엄청난 오류와 뒷골 당김이 나를 덮쳤지만 나름 선방했다. 이제 어느 정도 오류와 친해(?)졌다. 오류가 뜨면 읽어 보고 아 그래? 고칠게.... 고쳤지? 또 안되? 아그래? 구글링해볼게할정도로 의연해졌다.

또 개발을 배우고 배포까지 오느라 고생이 많았다. 부트캠프를 하면서 나름 고뇌에 시간도 있었고 성취의 카타르시스를 느낀 경우도 있었다. 열심히 하진 않았다고 생각하나 이만큼 올때까지 버텨준 것만으로도 스스로 고생이 많았다고 해주고 싶었다.

각설하고 배포란 왜 하는 것일까하는 의문을 품는 사람을 없을 것이다. Heroku나 네이버 ncloud등 많은 호스팅 서비스들이 많다. 그 중 공부하기 좋고 핫한 아마존 웹 서비스의 s3와 ec2의 차이를 다루어 볼 것이며 그 배포한 어플리케이션을 서포트하는 RDS라는 것도 알아 볼것이다.

Simple Storage Service = S3

먼저 S3에 대해서 먼저 알아보자 상기한것과 같이 단순 스토리지 서비스이다.

예를 들면 네이버 클라우드나 애플의 아이클라우드 정도로 생각하면 된다. 다만 좀 틀린것은 스토리지 클래스가 다양하고 그에 따른 요금이 차이가 있다.

즉 파일을 저장하고 관리하는 보안성, 내가 아는 바로는 데이터를 3개의 리젼 서버에 각각 저장하여 데이터를 보호하는 확장성과 내구성을 갖추고 있는 서비스이다. 그런데 굳이 나같은 개인에게 이런 서비스는 필요없다고 생각한다. 왜냐면 이렇게까지 저장하고 싶은 중요하고 시크릿한 데이터도 없을 뿐더러 저 내구성을 요할 정도로 내가 가진 컴퓨터가 박살날정도로 위험한 곳에 살고 있지 않기 때문이다. 그러나 S3는 우리에게 중요한 기능을 갖추고 있다.

바로 웹호스팅 기능이다. 내가 작업한 클라이언트 사이드 빌드한 파일을 올려 놓고 엔드라인을 정해 놓고 접근 방식을 고치기만 하면 외부에서도 사이트에 접속이 가능하다.

구축과정은 간단하며 배포과정은 유튜브에도 많고 홈페이지에도 굉장히 설명을 잘 해놓았다. 생활코딩 AWS S3 Web Hosting

그러나 나는 단순 클라이언트 사이드 어플리케이션을 배포를 하는 목적으로 S3를 추천하지 않는다. 왜냐하면 귀찮기 때문이다. 물론 잘 사용하고 목적에 따라 달라질순 있겠지만 굳이 한눈에 파악하기 어려운 요금체계를 가진 S3를 이용할 필요가 없다고 생각한다.

물론 EC2와 연동하는 방법이 있긴 하다. 그러나 클라이언트 사이드 배포만 할 목적이라면 netlify 라는 서비스를 이용하는 것이 편리하다. 깃허브에 연동 시켜놓기만 하면 지가 빌드를 하고 지가 알아서 해주는 서비스들이 있기 때문이다. netlify로도 서버사이드의 기능이 구현가능하다. 다만 클라이언트에서 코드를 다시 짜야하는 번거로움과 돈을 내야된다. 서버사이드의 기능을 구현하려면 EC2로 넘어가는게 맞다고 본다. 그래서 초보자 입장에선 netlify가 더 편하다고 할 수 있다.

Elastic Compute Cloud = EC2

쉽게 말해서 원격 컴퓨팅이 가능한 컴퓨터를 하나 임대한다고 생각하면 된다. 즉 개발자가 원격으로 그 컴퓨터(서버)에 접근해 조작가능하고 프로그램 설치 및 구성이 가능하다.

컴퓨터처럼 cpu 프로세서, 스토리지, 네트워크등을 구성이 가능하다. 컴퓨터 하드웨어 덕후들이라면 입이 벌어질 사양을 가진 컴퓨터를 사서 유지관리하는 비용에 비하면 많이 저렴하다. 참고 AWS 요금체계

또한 S3와는 다르게 서버사이드 배포가 가능하다. 다만 초반 웹앱을 실행하는데 dependency등을 구축 해야되며 유지관리가 필요하다.

또! 아무리 프리티어라도 용량을 많이 점유하거나 이용량이 많아 지고 설정에 따라 요금이 부과되며 또한 환경설정을 잘못해서 비밀번호나 아이디가 깃허브로 통해 유출된다면 해커들이 이를 크롤링해가서 내 아이디가 비트코인 채굴로 쓰일수 있으니 꼼꼼하게 학습하는게 좋을 것같다.

Relational Database Service = RDS

클라우드에서의 관계형 데이터베이스(DB)를 운용하거나 설정할 수 있는 기능이다. sql 설치이 되어 있는 DB에 최적화 된 컴퓨터를 대여하는 개념이라고 보면된다.

Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database 및 SQL Server등 많은 DB엔진을 지원하고 있어 범용이 좋다.

생각

장점은 이렇다. 이렇게는 어딜가나 여느 포스팅이나 이렇게 적어 놓을것이고 또한 저기 위에 내 생각을 적어 놓은 것도 서비스들을 조금이라도 이용하다보면 느낄수 있는 부분이다.

그러다가 생각을 한게 EC2에 DB를 관리하는 프로그램을 깔고 운영하면 되지 않을까? 하는 생각을 했다. 처음엔 나만의 비상한(?) 생각이라 생각했지만 다른 사람들도 이렇게 생각을 한 사람들이 있었다.

정리하자면 테스트를 하고 개발하는 개발자고 또한 작은 규모의 웹앱을 운용한다면 EC2에 DB프로그램을 설치해서 운용하는것이 좋다고 여겨 진다. 다만 웹앱이 규모가 커지고 방대해지면 그 데이터프로그램을 관리하고 업데이트 하는 일도 있기 때문에 RDS내의 기능을 이용하는 것이 더욱 더 이점을 가질수 있다는 것이다. 이와 같은 시간절약을 바탕으로 사용자의 비즈니스와 개발에 더욱 집중할 수 있다.

출처 : 코드스테이츠

대략적인 구조는 위의 그림과 같다. 다음 포스팅에서는 EC2를 구현하는 상세한 방법과 나아가 배포자동화가 의미하는 CI/CD에 대해서 공부하고 포스팅해보도록 하겠다

profile
只要功夫深,铁杵磨成针
post-custom-banner

0개의 댓글