아마존에서 제공하는 API들은 위 사진과 같이 한눈에 샐 수 없을 정도로 많다. 왜 이렇게 많은 서비스들을 제공하게 된 이유는 무엇일까?
그 이유는 이미 아마존닷컴이 이 서비스들을 통해 구축됐기 때문이다.
어느 날, 아마존의 CEO인 제프 베소스가 2002년 어느 날 아래의 내용의 메일을 사내로 돌렸다고 한다.
1. 모든 팀들은 데이터와 기능들을 서비스 인터페이스로 연결시켜라.
2. 팀들은 이 인터페이스를 통해서 연락해야 한다.
3. 다른 어떤 커뮤니케이션 방법도 허용되지 않는다. 직접 링크를 보내거나 다른 팀의 스토리지에 직접 액세스해서도 안 되며, 공유 메모리나 백도어 같은 것도 안 된다. 모든 커뮤니케이션은 네트워크를 통한 서비스 인터페이스로 이루어져야 한다.
4. 어떤 기술을 쓰든 상관없다. HTTP, Cobra, Pubsub, 독자 프로토콜…….그건 상관없다. 베조스는 그런 데 관심 없다.
5. 모든 서비스 인터페이스는 예외 없이 외부에서 이용 가능하게 만들어져야 한다. 그 말은 팀들은 외부 개발자들이 인터페이스를 이용할 수 있게 해야 한다는 것이다. 예외는 없다.
6. 이를 실천하지 않는 사람은 누구든 해고될 것이다.
출처: 스티브의 구글 플랫폼 폭언(http://eggry.egloos.com/3763434)
그래서 아마존의 개발자들은 아마존의 인프라를 서비스 지향 아키텍처로 갈아치우게 되었다.
2. EC2란 무엇인가?
Elastic Compute Cloud — 줄여서 EC2라고 한다.
EC2는 AWS 서비스의 핵심으로써 사용자는 아마존의 가상컴퓨터를 임대받아 그 위에 자신만의 컴퓨터 프로그램을 실행해 원하는 기능을 컴퓨터를 따로 살 필요 없이 필요한 성능, 용량만큼 간단하게 구축할 수 있다.
이 서비스는 CPU사용량(연산횟수)으로 결제하는 것이 아닌 인스턴스를 켜 놓은 시간을 기준으로 결제하는 구조다.
위의 사진과 같이 수많은 인스턴스 옵션들이 있는데(이것도 추린 것들 이다) 이 수많은 옵션 중 자신의 필요에 따라 옵션을 선택하고 그 옵션에 따라 시간당 비용이 달라지는 결제제도이다.
결제금액에 주의해야할 것이 하나 더 있는데 인터넷은 요금이 더 나올수 도 있다는 점이다.(우리가 할 설정에서는 걱정할 필요가 없다)
3. EC2 인스턴스를 생성하기
EC2 콘솔로 갔을 때의 화면이다. 인스턴스 시작을 눌러 인스턴스 생성을 시작해보자.
단계1 AMI선택
AMI란? 인스턴스를 시작하는 최초의 설정(운영체제, 애플리케이션 서버, 애플리케이션)을 의미한다. 이를 이미지라고 한다.
여러 옵션들이 있지만 이번에는 windows server 2019 beta 선택하자.
단계 2 인스턴스 유형
우리는 공부를 위해 이 인스턴스를 생성하는 것이므로 프리티어가 있는 인스턴스 선택
단계 3 인스턴스 세부 정보 구성
이 단계에서는 우리가 따로 건드려줄 옵션은 없다
단계 4 스토리지 추가
만약 당신이 더 많은 저장 공간이 필요하다면 초기설정보다 크기를 더 늘려주면 된다.
하지만 우리가 만들 인스턴스는 많은 저장 공간이 필요 없으므로 그냥 넘어간다.
단계 5 태그 추가
EC2에 태그는 왜 붙이는가?
인스턴스가 어떤 역할인지 누가 관리하는지 메모해 두는 것이다.
EX)
이름 — 웹서버
관리자 — 권진호
타입 — 실 서버
등의 정보를 적어놓는 것이다.
단계 6 보안 그룹 구성
인스턴스의 트래픽을 제어하는 방화벽 규칙을 구성하는 단계이다. 우리가 당장 사용할 인터넷 프로토콜은 2가지이다.
- RDP — 원격제어용 프로토콜 : 윈도우 원격제어 프로토콜이기 때문에(접근 시 이 인스턴스 내부의 모든 권한 제어 가능) 아무나 접근해선 안 된다. 그렇기 때문에 내 IP에서만 접근 할 수 있도록 한다. 만약 다른 관리자가 추가된다면 그 사용자의 IP도 추가해 준다.
2. HTTP — 웹페이지 접근용 — 홈페이지는 누구나 접근 가능해야 하기 때문에 위치무관 소스를 사용해 준다.
설명은 한글이면 인스턴스 생성이 안 되니 꼭 영어로 작성해주자
인스턴스를 시작하기 위한 거의 모든 초기 설정을 완료했다.
마지막으로 이 인스턴스의 비밀번호와 같은 키 페어를 지정 해준다.
만약 초기 단계에서 키 페어를 지정하지 않았다면 이 창에서 다시 생성 할 수 있으니 걱정하지 말고 이 단계에서 생성하자.
생성한 키 페어를 자신이 잘 기억하고 관리할 수 있는 공간에 저장해 둔다.
재발급의 과정이 매우 복잡하니 꼭 잘 관리하자.
이 인스턴스에 접근 할 때 필요한 키 페어를 지정 한 후 인스턴스를 시작하면 인스턴스가 구동되기 시작한다.
몇 분 뒤 구동이 완료된 인스턴스이다. 이제 이 인스턴스를 원격으로 제어해보자.
4. EC2에서 웹서버 구동하기 (window 환경)
EC2가 구동되었으니 이제 원격제어를 통해 웹 서버를 구동해보자.
원격 데스크톱 파일 다운로드를 눌러서 RDP파일을 받고 원격접속에 필요한 암호를 가져온다.
암호를 가져올 때에는 인스턴스를 생성할 때 사용한 키 페어가 필요하다.
키 페어 경로를 지정해준 후 암호 해독을 하면 오른쪽 사진과 상태가 되는데 이 암호를 복사해두고 다운로드 받은 RDP파일을 실행시킨다.
원격 접속을 하기위한 자격 증명엔 암호가 필요한데 이 암호가 아까 복사한 암호이다. 붙여넣기 해주자.
인증서를 통과하면 원격 접속이 완료됐다.
이제 웹서버를 실행해보자 우리는 흔히 쓰는 아파치 웹서버 말고 IIS(Internet Information Services)를 사용할 것이다. 원한다면 아파치를 설치해도 무관하다.
설치된 프로그램 중 Server Manager를 실행한다.
오른쪽 위에 Manage탭이 있는데 이 탭 중 Add Roles and Features를 클릭한다.
여기서 Web Server(IIS)를 추가해준다
설치가 완료되면 자동으로 웹서버가 구동되고 인스턴스의 C 폴더에 inetpub이라는 폴더가 생기는데 이 폴더가 IIS웹서버가 구동되는 폴더이다.
wwwroot에 html하나를 작성해준다(index.html — 내용은 상관없다)
이렇게 웹 서버의 구동을 완료했다. 그렇다면 외부에서 이 인스턴스의 웹서버에는 어떻게 접근할까?
아까 우리는 인스턴스를 생성하면서 보안 탭에서 http를 추가했을 것이다. 이 설정으로 들어가기 위해선 URL이 필요한대 이 URL은 인스턴스의 설명에 나와있다.
퍼블릭 DNS를 복사해 /index.html만 추가해서 접근해보자.
그럼 아까 생성했던 웹페이지가 나올것이다!
지금까지 우리는 AWS를 이용한 간단한 웹서버 만들기를 진행해보았다. 만약 AWS없이 할려면 데스크탑을 구매하거나 빌리는데 시간이 걸리고 OS를 설치하는 데에 엄청난 시간이 소모되지만 이 시간을 고작 몇분만에 끝낸 것이다.
AWS를 알아보기 전에는 그저 어렵게만 생각했지만 막상 해보니 너무나도 간단한 시스템이다.
이제 시작하는법을 알았으니 개인이 구동하고자 했던 서버프로그램(게임, 웹, 스토리지)을 EC2를 통해 실행시켜보자.