-
참고 교재
- 당신이 지금 알아야 할 AWS
- 아마존 웹 서비스 AWS Discovery Book
- AWS Certified Solutions Architect Study Guide
- AWS 기반 AI 애플리케이션 개발 - AI 유니콘 기업으로 도약하기
- 비전공자를 위한 AWS - 클라우드 입문부터 자격증 취득까지 쉽게 배우는 AWS
-
참고 자료
(1) AWS란 무엇인가
AWS(Amazon Web Services)는 현재 전 세계에서 가장 규모가 큰 클라우드 컴퓨팅 플랫폼으로 컴퓨팅, 스토리지, 데이터베이스 네트워킹, 분석 등 다양한 주문형(on-demand) 클라우드 서비스를 제공한다. 대상 AI 솔루션을 확장성과 보안성이 좋은 클라우드 컴퓨팅 플랫폼에서 매우 안정적으로 운영할 수 있고 대량 데이터 수집 및 전처리, AI 기능 통합, 신속한 시제품화(prototyping), 솔루션의 반복 시험 등을 쉽게 할 수 있다.
AI 관련 AWS 서비스는 AWS AI 서비스와 AWS ML 서비스로 나뉜다.
(1-1) 클라우드 컴퓨팅이란 무엇인가
앞서 언급된 클라우드 컴퓨팅(Cloud Computing)은 인터넷이라는 통신 서비스를 활용한 컴퓨팅 서비스 종류의 하나로 개인용 컴퓨터가 아닌, 인터넷을 통해 연결된 원격 컴퓨터를 활용하는 기술을 말한다.
클라우드 서비스는 이용 방식에 따라 크게 세 가지로 분류할 수 있다.
- IaaS(Infrastructure-as-a-Service) : 물리적 서버(CPU, Memory 및 OS), 네트워크, 스토리지를 가상화하여 다수의 고객을 대상으로 유연하게 제공하는 인프라 서비스
- PaaS(Platform-as-a-Service) : Web 기반의 서비스 또는 애플리케이션 등의 개발 및 실행을 위한 표준 플랫폼 환경을 서비스 형태로 제공하는 서비스
- SaaS(Software-as-a-Service) : 구글의 Gmail이나 MS Office 365 등과 같이 응용프로그램(Application)을 인터넷 및 웹 브라우저를 통해 제공하는 서비스
클라우드 컴퓨팅은 데이터 센터 운영 및 유지 관리에 비용 투자가 필요하지 않고 몇 분 만에 전 세계에 서비스를 런칭하거나 배포할 수 있다는 장점이 존재한다.
(2) AWS 주요 서비스
-
컴퓨팅 서비스
- Amazon EC2(Elastic Compute Cloud) : 가상화 서버
- Amazon Auto Scaling : 서버의 특정 조건에 따라 서버를 확장/축소할 수 있게 해주는 서비스
- Amazon Lightsail : 간단한 가상화 프라이빗 서버(VPS)가 필요할 때 웹 사이트와 웹 애플리케이션을 패포하고 관리하는 기능
- Amazon Workspaces : 클라우드 기반 가상 데스크톱 서비스로 데이터를 중앙 서버에 저장 및 관리할 수 있도록 지원해 주는 서비스
-
네트워킹 서비스
- Amazon Route 53 : DNS(Domain Name System) 웹 서비스
- Amazon VPC(Virtual Private Cloud) : 클라우드 내에 가상 네트워크를 생성하고 접근 제어와 보안성을 제공하는 서비스
- AWS Direct Connect : 기존 On-Premise의 인프라와 AWS를 연결하는 전용선을 구성하여, 낮은 지연 시간으로 데이터 및 정보를 공유할 수 있게 하는 서비스
- Amazon ELB(Elastic Load Balancing) : 웹 서버 및 각종 서버에 사용량과 접속자가 많은 경우 트래픽 부하를 분산하여 서버의 가용성과 안정성을 높이는 서비스
-
스토리지 서비스
- Amazon S3(Simple Storage Service) : 확장 가능한 객체 스토리지 서비스
- Amazon Glacier : 사용 빈도가 높지 않은 데이터를 저렴한 비용으로 장기 보관할 수 있게 해주는 서비스
- Amazon EBS(Elastic Block Store) : EC2를 위한 고성능 블록 스토리지 서비스 (빠른 속도로 데이터를 저장 보관할 수 있는 서비스)
- AWS Storage Gateway : On-Premise에 있는 데이터를 클라우드로 저장 보관하기 위한 연결 Gateway 서비스
- AWS Snowball : 대용량 데이터를 네트워크 대신 물리적 장치를 통해 AWS로 안전하게 전송하는 서비스 (Import/Export 서비스를 통해 대량의 데이터를 AWS로 이전할 때 네트워크로 전송하지 않고 디스크나 스토리지에 저장하여 물리적으로 전달하고 이를 업로드하여 주는 서비스)
-
데이터베이스 서비스
- Amazon RDS(Relational Database Service) : MySQL, PostgreSQL, Oracle 등 RDBMS 서비스를 사용자가 직접 관리하지 않고, Amazon에서 제공하는 서비스를 이용하여 데이터베이스를 이용할 수 있도록 지원하는 관리형 관계형 데이터베이스 서비스
- Amazon DynamoDB : 고성능 NoSQL 데이터베이스 서비스
- Amazon ElastiCache : 인메모리 캐시로, 응답 속도를 높이고 데이터베이스 부하를 줄이는 서비스 (In-Memory 기반의 Cache 서비스로 빠른 속도를 필요로 하는 서비스와 연계하여 높은 응답속도와 신뢰성을 필요로 하는 서비스)
-
분석 플랫폼
- Amazon Kinesis : 실시간 스트리밍 데이터를 수집, 처리, 분석하는 서비스
- Amazon Redshift : 대규모 데이터 분석을 위한 완전 관리형 데이터 웨어하우스
- Amazon EMR(Elastic MapReduce) : Apache Hadoop, Spark 등을 활용해 빅데이터를 처리하는 클러스터 관리형 서비스
-
애플리케이션 서비스
- Amazon CloudSearch : 텍스트 기반 검색 서비스를 제공하여 정보 검색을 지원
- Amazon SES(Simple Email Service) : 외부로 대량의 메일을 발송 및 수신을 관리하는 서비스
- Amazon Elastic Transcoder : 비디오 파일을 다양한 포맷으로 변환해 제공하는 서비스
이외에도 애플리케이션 통합, 증강현실 및 가상현실, 비용관리, 비즈니스 생산성, 데스크톱 및 앱스트리밍, 개발자 도구, 게임 개발, 사물인터넷(IoT), 기계학습(AI), 미디어 서비스, 마이그레이션, 모바일 서비스 등 다양한 고유 서비스와 새로운 서비스들을 제공하고 있다.
(3) AWS 계정 만들기
- AWS 홈페이지에서 계정을 등록한다.
- AWS 계정에 로그인하면 AWS 관리 콘솔(Management Console)이 나타나는데 AWS 클라우드 플랫폼을 관리하는 웹 인터페이스로, 클라우드 컴퓨팅 및 클라우드 스토리지와 같은 다양한 자원을 시작하고 중지하고 모니터링할 수 있다. 또한 월별 청구, 정밀한 접근 제어 등 AWS 계정의 설정 정보를 관리할 수 있고 전체 AWS 서비스에 대한 교육 자료를 이용할 수도 있다.
(4) Amazon EC2와 EBS를 이용해 가상 서버 생성하기
- 서비스 → 컴퓨팅 → EC2 접속
- 인스턴스 → 인스턴스 시작
- AMI는 Windows와 Linux 두 개를 만들 거라 먼저 Windows를 선택한다.
- 키 페어에서 새 키 페어 생성을 통해 만들고 PEM 파일로 저장한다.
- PEM 파일을 분실하면 해당 EC2에 접근할 수 없기 때문에 ssh 폴더를 만들어 보관한다.
- 생성한 인스턴스를 선택해 연결 버튼을 클릭한다.

- RDP 클라이언트 → 암호 가져오기 → 암호 해독 → 원격 데스크톱 파일 다운로드 → 사용자 자격 증명 입력에서 페이지에서 확인된 암호를 입력하고 확인한다.

- 생성된 인스턴스를 정지시키기 위해 서버에 접속 후 Shut down을 수행하면 된다.
- 인스턴스 페이지에서 해당 인스턴스의 상태를 확인할 수 있다.

- 정지된 인스턴스를 다시 시작하고 싶을 때 해당 인스턴스를 우클릭해 시작하면 된다.

- 마찬가지로 다시 우클릭 해 인스턴스를 종료(삭제)하고 확인해 준다.

- Windows 서버 생성 절차와 동일하게 Linux 인스턴스를 생성한다.
- 먼저 Linux 인스턴스 접속을 위해 일반적인 SSH 접속용 프로그램이 필요하다. http://putty.org/ 해당 사이트에서 본인 PC에 맞는 OS 버전과 bit 종류를 확인하여 다운로드 받는다.
- PUTTY 프로그램이 설치된 경로로 이동 후 "puttygen.exe"를 실행한다.
- "PuTTY Key Generator"를 실행해 Conversions → Import Key에서 이전에 생성한 키 페어 파일을 선택한다.
- PuTTY로 Import할 Private key의 생성을 위해 Save Private Key를 클릭 후 Without Passphrase to protect에서 예 버튼을 클릭한다.
- 그다음 ppk 파일을 저장한다.
- PC에서 PuTTY 프로그램을 실행한다.
- Connection → SSH → Auth 메뉴의 Private key file for authentication 항목에서 전에 생성한 ppk 파일을 선택한다.

- 접속할 Linux 인스턴스 정보를 확인하기 위해 AWS Console에 접속하여 인스턴스를 선택 후 IPv4 퍼블릭 IP 정보를 확인한다.
- Session 항목에서 Hostname에 인스턴스의 IP를 입력한다.
- Connection Type을 SSH로 선택하고 Saved Sessions에 "Linux Server"라고 입력 후 Save 버튼을 클릭한다.
- 하단의 Open 버튼을 클릭해 확인한다.

- login as: 항목에 "ec2-user"라고 입력 후 enter를 누른다.
- Linux 인스턴스에 접속이 완료됐다.

- Linux 인스턴스의 시작(Start), 정지(Stop), 종료(Terminate) 또한 Windows 인스턴스와 동일한 방식으로 수행한다.
1주 차를 마치며...
AWS를 처음 시작하다 보니 모르는 게 많아서 설명을 들어도 이해가 잘 안되는 부분이 많았다. 작업 중에 교재 내용과 실제 환경이 달라서 당황하기도 했고, AMI나 SSH 키 페어 관련 문제를 해결하는 데 시간이 꽤 걸렸지만, 이러한 과정을 통해 AWS에서 발생하는 기본적인 문제를 스스로 해결하는 능력을 조금씩 키우고 있다는 느낌이 들었다.
앞으로 종단 간(end-to-end)의 전체 AI 솔루션을 설계하고 AWS 플랫폼에서 구축하는 데 필요한 다양한 기술을 다루고자 한다.