프로그래밍을 직업으로 삼는 사람이라면 아마존 웹 서비스(AWS: Amazon Web Services)에 대해서 한번쯤은 들어봤을 것이다. 아마존에서 처음부터 클라우드 서비스 플랫폼을 만들 생각을 하고 있던 것은 아니었다고 한다. 2000년도 초반 인터넷 쇼핑몰을 운영하던 아마존은 늘어난 트래픽과 주문량을 감당하기 위해서 굉장히 뛰어난 수준의 내부 인프라 시스템을 구축하게 되었다. 그러다가 컴퓨팅, 스토리지, 데이터베이스 등 운영 서버에 필요한 인프라를 누구보다 안정적이고 저렴하게 운영할 수 있는 능력을 아마존 쇼핑몰 하나가 아닌 전 세계 모든 회사를 대상으로 제공하자는 생각을 하게 됐고, 2006년부터 EC2를 서비스하기 시작했다.
아마존 웹 서비스는 아마존 닷컴의 클라우드 컴퓨팅 사업부다. 아마존 웹 서비스는 다른 웹 사이트나 클라이언트측 응용 프로그램에 대해 온라인 서비스를 제공하고 있다. 이러한 서비스의 상당수는 다른 개발자가 사용 가능한 기능을 제공하는 플랫폼을 제공하는 PaaS이다.(다른 서비스 모델도 제공한다) 아마존 웹 서비스의 각종 서비스는 REST 및 SOAP를 통해 접근, 이용 및 관리가 가능하다. 비용은 실제 사용량에 따라 결정되며, 일부 서비스의 경우 미리 고정된 금액을 지불하는 형태도 있다.
기존에 개발한 게임 프로젝트(github.com/cheonseungmin/mundododgeball)는 로컬 컴퓨터에 포트포워딩을 통해 서버를 열었기 때문에 해당 IP가 노출되는 점과 서버 컴퓨터가 항상 켜져있어야 하는 단점이 있었다. 소비자도 없고 개인 컴퓨터이기 때문에 이는 매우 부담스러운 상황이었다. 그렇지만 AWS를 이용하면 소스를 위치에 상관없이 실행 유지하는 것이 가능해진다. 앞으로 AWS 프로젝트의 진행 계획을 정리하며 글을 마무리 하겠다. 하단에 필요한 배경 지식과 참고한 문서들을 정리해 놓았다.
1. EC2 서비스를 이용하여 리눅스 인스턴스를 구축한다.
2. 인스턴스에 프로젝트 코드 및 환경을 구축한다.
3. S3에 이미지 및 오디로 파일을 업로드하고 이를 참조한다.
4. RDS를 통해 프로젝트의 데이터베이스를 구축하고 EC2와 연결한다.
5. Route 53을 통해 인스턴스 주소를 쉽게 수정한다.
- 배경 지식
클라우딩 컴퓨팅: 사용자의 직접적인 활발한 관리 없이 컴퓨터 시스템 자원을 제공하는 것을 의미한다. (예: 컴퓨터 네트워크, 데이터베이스, 서버, 스토리지) 사용자는 입/출력 작업만 진행하고 정보분석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드(숨겨진 복잡한 인프라 구조를 구름이라고 부른다)라고 불리는 제 3의 공간에서 이루어지는 컴퓨팅 시스템 형태라고 할 수 있다. 서비스 모델로 IaaS, PaaS, SaaS가 있다.
IaaS: 물리적 컴퓨팅 자원, 가상 머신등의 자원을 제공하는 서비스이다. AWS의 EC2가 대표적인 예이다.
PaaS: 개발자들에게 개발 환경(운영체제, 프로그래밍 언어 실행환경, 데이터베이스, 웹 서버)을 제공한다.
SaaS: 클라우드에 애플리케이션을 설치, 운영하여 서비스 사용자들은 클라우드 클라이언트 소프트웨어를 통해 접근한다. 네이버 클라우드가 대표적인 예이다.
서버리스 컴퓨팅: 실제 서버가 없는 것이 아니라 서버 코드 실행을 위해 가상머신을 구매, 임대할 필요가 없는 서비스를 의미한다.
REST: 웹 서비스와 모바일 애플리케이션 경량화의 필요에 맞춘 소프트웨어 아키텍쳐. URI를 통해 자원을 명시하고 4가지의 HTTP 메소드(CRUD: POST, GET, PUT, DELETE)를 사용한다. HTTP를 통해 수신된 요청을 RESTful API가 처리한다. JSON과 같이 다양한 형식으로 메시지 반환이 가능하다. 따라야하는 약속이 있지만, XML 메시징 등 속도를 저하시키고 더 무겁게 만드는 SOAP보다 사용하기 쉬운 것으로 간주된다. 다음과 같은 6가지 특징을 가진다. 자세한 내용은 조만간 포스팅 하겠다.
1. 유니폼 인터페이스: 플랫폼(예:안드로이드/IOS)에 종속되지 않고 URI를 통해 자원에 접근 가능하다.
2. 무상태성: HTTP처럼 요청에 응답하면 연결을 끊고 상태를 저장하지 않는다.
3. 캐시가능: HTTP 기반이므로 기존의 캐시 인프라를 사용가능하다.
4. 자체 표현 구조: 동사 + 명사로 이름을 지어서 어떤 역할을 하는지 쉽게 알 수 있다.
5. 클라이언트-서버 구조: 클라이언트와 서버의 역할이 구분되어 구성된다.
6. 계층형 구조: 역할을 계층화하여 구성한다.
RESTful API: REST 기반의 규칙들을 지켜서 설계된 API이다. 자세한 내용은 조만간 포스팅하겠다.
RESTful 하지 못한 API: CRUD 기능을 전부 POST로만 처리하는 API
SOAP: 서로 다른 플랫폼 간에 통신할 수 있도록 설계된 최초의 프로토콜이다. 요청이 수신되면 XML 문서 형식으로 SOAP 메시지가 반환된다.
- 참조
ko.wikipedia.org/wiki/%EC%95%84%EB%A7%88%EC%A1%B4_%EC%9B%B9_%EC%84%9C%EB%B9%84%EC%8A%A4
아마존 웹 서비스 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 아마존 웹 서비스(영어: Amazon Web Services; AWS)는 아마존닷컴의 클라우드 컴퓨팅 사업부다. 아마존 웹 서비스는 다른 웹 사이트나
ko.wikipedia.org
아마존 웹 서비스 - 나무위키
제공하는 서비스를 목록으로 간략하게 정리하지만, 실제로는 훨씬 더 방대한 서비스들과 개별 기능들을 제공하므로, 공식 문서를 참조할 것. 컨테이너 이미지를 저장, 관리 및 배포하는 서비스
namu.wiki
RESTful API란 ?
개발 공부를 시작하고 자주 접하고 그냥 지나친 개념 중에 하나이다. 면접 질문으로도 자주 나온다고 하고, 실제로 채용공고 필요 역량에도 REST 등 인터넷 기반 프로토콜/ 기술에 대한 이해를 요
brainbackdoor.tistory.com
REST API 제대로 알고 사용하기 : TOAST Meetup
REST API 제대로 알고 사용하기
meetup.toast.com
REST - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참조하십시오. REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하
ko.wikipedia.org
'AWS' 카테고리의 다른 글
[AWS 5] EC2 인스턴스와 RDS 데이터베이스 연동하기 (0) | 2021.01.16 |
---|---|
[AWS 4] S3 서비스 적용하기 (0) | 2021.01.15 |
[AWS 3] git, node.js 환경 구축하기 (0) | 2021.01.15 |
[AWS 2] EC2 우분투 인스턴스 생성하기 (0) | 2021.01.14 |
[AWS 0] 프로젝트 개요 (1) | 2021.01.13 |