# AWS의 서비스 컴포넌트들 정리

TIP

구 블로그에 남겨둔 기록을 옮겨왔다.

2020년 현재는 벌써 자바15가 출시된 상태이다. 조만간 현행화를 해야겠다.

# Compute

  • EC2(Elastic Compute Cloud): 전통적 서버 인스턴스
  • ECS(EC2 Container Service): 도커를 돌릴수 있는 컨테이너 EC2
  • Elastic Beanstalk: Heroku같은 PaaS. 소스 커밋만으로 빌드/배포/운영 되도록 자동화되어있다. 현재 PHP, Java, Python, Ruby, Node.js, .NET, Go를 지원한다.
  • Lambda: FaaS(Function as a Service)이다. ECS는 도커, EB는 프로세스 단위정도라면 Lambda는 함수 단위로 서비스를 제공하는 수준이다. 당연히 함수만 돌려주기 때문에 Stateless인 기능만 가능하다. 현재 Node.js, Python, Java를 지원한다. 간단한 함수가 반복적으로 사용될때 유용할것 같다. 밀리초 단위로 요금을 매긴다.

# Storage & Content Delivery

  • S3(Simple Storage Service): 다른 웹스토리지와 유사한 개념. S3+ajax+API GW+Lambda등을 조합하면 serverless 구조로 웹사이트 구축도 가능. 오래된 파일 자동 삭제 기능등이 유용하다.
  • CloudFront: CDN 서비스.
  • EFS(Elastic File System): EC2와 연결할 수 있는 스토리지 개념. 기존 EBS와 다르게 동적으로 용량을 변경할 수 있고, 여러 EC2에 동시에 연결이 가능하다. 아직 전권역 확산은 안되어있다.
  • EBS(Elastic Block Store): 서비스라기보다는 EC2에서 사용할 하드 드라이브 개념으로 생각하면 됨. 응답속도가 빠른 SSD타입과 대역폭이 큰 HDD타입이 있다.
  • Glacier: S3보다 저렴한 대신 한번 가져올때 3~5시간이 걸린다고 한다. GB당 월 0.007달러라고 하니... 100기가면 월 7백원쯤? 사진같은것 백업용으로 쓸만 할듯.
  • Snowball: 거대용량 데이터는 네트워크로 업/다운하기 어려우니 실제 디스크를 택배로 보내서 올려주는 서비스. 나랑은 무관할듯...ㅋㅋ
  • Storage Gateway: 로컬이나 타 IDC에 VM을 설치해서 S3등을 드라이브처럼 활용할 수 있는듯.

# Database

  • RDS: RDBMS. MySQL, Oracle, MsSQL, PostgreSQL, MariaDB, Aurora등을 지원한다. Aurora는 MySQL과 호환된다. AWS에서 자체 제작한 솔루션인데 MySQL의 쿼리엔진과 클라우드 스토리지를 활용한 스토리지 엔진을 결합해서 복잡하게 Replica 설정을 하지 않아도 고가용성을 달성할 수 있다...라고 이전에 re:invent행사에서 들었다. 정말인지는 써봐야 알듯. 일단 규모가 4xlarge인가 넘어가는게 기본이라서 회사에서나 시도해봐야겠다.
  • DynamoDB: NoSQL계열 서비스. 자체 SDK를 이용한 API만 가능한것 같다. Android, Java, JavaScript, iOS, .NET, Node.js, Python, PHP, Ruby를 지원한다. 브라우저에서 JavaScript로 접근이 가능하다는게 눈에 띈다. 보안은 어떻게 해결한거지? 읽어보니 특별한건 없다. 하드코딩 하지 말고, 서드파티에서 인증 후에 AWS의 키를 받아오라고 가이드 되어있다.
  • ElastiCache: In-memory cache. Memcached와 Redis엔진을 지원한다. 엔진에 따른 프로토콜도 지원되고, REST API로도 사용이 가능한것 같다.
  • RedShift: Datawarehouse. 즉 페타바이트 규모같은 초거대 용량의 데이타를 다룰 수 있는 서비스. RDS와 유사하지만 규모가 다른 서비스로 일단 기억하자.
  • DMS(Data Migration Service): 이름 그대로. Aurora로 마이그레이션할때 사용할 필요가 있겠다.

# Networking

  • VPC(Virtual Private Cloud): 요즘 EC2를 만들땐 전부 VPC를 구성해서 거기에 생성해야 한다. 옛날보다 좀 까다로워졌다. 그래도 포트 노출 방지랑 서브넷 구성등은 어차피 해야할테니...
  • Direct Connect: 백본 네트워크 개념.
  • Route 53: DNS서비스. 좀 특이한 점은 RTT시간 기반으로 밸런싱이 가능하다. 아니면 IP를 보고 국가나 지역을 구분해서 밸런싱도 가능. DNS 갱신이 보통 1분 이내에 완료된다는 점도 장점.
  • ELB(Elastic Load Balancing): EC2에 연결하는 L7 스위치. 초창기에는 버그도 많고 기능도 적었는데 지금은 많이 좋아졌다. 그래도 속을 볼 수 없으므로 ELB에 장애가 발생하면 알기가 어려운 경우가 아직도 존재함. 예를 들어 Cross-zone 설정을 껐다 켰다 하면 밸런싱이 괴상하게 되는 경우가 종종 보인다.

# Analytics

  • EMR(Elastic Map Reduce): Hadoop 플랫폼이라고 보면 된다. 하둡 에코시스템을 돌릴 수 있나보다. 나도 안써봐서 자세히는 모르겠다. 기회가 되면 써보자.
  • Data Pipeline: 마치 IFTTT같은 서비스라고 생각하면 쉽겠다. 언제 얼마마다 수행할건지의 Schedule, 데이타 소스인 Node, 무엇을 할건지 Activity등을 연결하고 설정하면 된다. When/What/How를 설정하는 셈이군. 정리하고보니 정말 IFTTT와 유사하다. Node들에는 DynamoDB/RDS/RedShift/S3 등이 들어갈 수 있고, Activity에는 Copy/EMR/Hadoop/Hive/HiveCopy/Pig/RedshiftCopy/ShellCommand/Sql 등이 있다. ETL이라고 봐도 되겠네.
  • Elastisearch Service: 로그 분석 플랫폼. 어플에서 Logstash를 사용해서 로그를 보내고, Kibana를 사용해서 시각화하여 분석할 수 있다. 왜 굳이 Service가 붙어있나 했더니 Elastisearch는 별도의 Elastic이란 회사의 솔루션이더라. Elastic이 AWS에서 많이 쓰길래 같은건줄 알았더니...ㅋ 주로 ELK 스택이라고 해서 Elastisearch+Logstash+Kibana로 많이들 쓰는 모양. Kibana 스샷을 보니 엄청 고급스럽다. 사용자 패턴 분석은 ELK 솔루션이면 거의 다 될것 같네 ㄷㄷㄷ 참고로 logstash는 Java로만 제공된다. 물론 비공식으로 다른 언어에서도 쓸 수 있는것 같다. 또 참고로 log수집 도구는 log aggregator라고 부르나본데 scribe/flume/fluentd/logstash 등이 주로 쓰이나보다. 빅데이터 트렌드에서 연관이 많이 되어 언급되는것 같다.
  • Kinesis: 대용량 스트리밍 데이터(일반 파일도 가능한것 같다)를 Firehose라는 SDK나 에이전트를 사용해 전송하고 AWS내의 스토리지에 저장할 수 있다. 에이전트는 리눅스용만 있는 모양. 그리고 다른 컴포넌트로 보낼수도 있다. 중간 단계에서 분석하는 Kinesis Analytics는 아직 개발중인듯. Elastisearch랑 뭐가 다른거지? 더 찾아보니 Kinesis Firehose를 사용해서 데이타를 수집해서 Elastisearch로 보낼 수도 있다고 하네. 결국 비슷한데 분석 방법이나 목적이 약간 다른 정도로 이해했다. 아, 다른점은 Kinesis Streams를 사용하면 다른 컴포넌트로 보낼 수 있다는 점이겠다.
  • Machine Learning: 머신러닝 플랫폼. S3같은 AWS내의 데이타를 기반으로 ML 모델은 AWS 콘솔에서 바로 설정하는듯. 각종 메트릭들이 바로 웹상에서 나오더라. 이러면 텐서플로 힘들게 설치하고 코딩할 필요가 없는건데... 하긴 텐서플로 사이트에도 웹상에서 다 해볼 수 있긴 하지... 그리고 결과적으로 예측을 해야하는데 이것도 웹상에서 하는것 같더라. 매우 빠르고 쉽게 경험해볼 수 있을듯.
  • QuickSight: 아직 평가판인데, 이게 뭐하는 거냐면 데이타를 올리기만 하며 스스로 패턴을 분석해서 적당한 시각화를 해주는 서비스다. BI(Business Intelligence)라고 부르던데... 이름 그대로 데이타에서 인간이 볼 수 없는 부분을 패턴 분석으로 통찰력을 얻을 수 있겠다. 대신 어떤 데이타를 입력으로 주느냐에 따라 결과가 매우 달라질 것이기 때문에 그것은 인간에 의존성이 있는것 아닌가 하는 생각이 든다. 뭐 정 없으면 있는대로 다 때려 넣어서 보겠지..ㅋㅋ

# Enterprise Applications

  • WorkSpaces: VDI(Virtual Desktop Infra.), 즉 가상 데스크탑 환경을 제공. 혹시 누가 창업하면 초기 창업비용을 아낄 수 있을듯..ㅋ
  • WorkDocs: 문서 관리 솔루션. 협업자들끼리 서로 코멘트도 달고 버져닝도 가능하다.
  • WorkMail: 메일서버 솔루션. Outlook 연동이 되어서 메일 및 일정 관리도 가능한듯.

# Internet of Things

  • IoT: 메시징 브로커 인듯. MQTT/WebSocket/HTTP를 지원한다. SDK를 제공하며 C/JavaScript/Arduino/Java/Python/iOS/Android를 지원한다. 자체 SDK를 제작할수도 있다.

# Mobile Services

  • Mobile Hub: 아마존 콘솔에서 종합적으로 같은 그룹 컴포넌트를 제어하는 모양이다.
  • Mobile SDK: 스마트폰용 AWS SDK정도로 생각하면 될듯. iOS/Android/FireOS/Xamarin/Unity등을 지원한다.
  • API Gateway: 말 그대로 API Gateway다. Serverless 구조에선 필수인 요소라고 생각됨.
  • Cognito: 사용자 인증/관리 서비스. 은근 작업량 많고 귀찮은 사용자 관리를 대신해준다니 반가운 서비스다. Cognito Sync는 사용자 데이타 동기화 서비스라고 하는데.. 쿠키/세션 개념과 비슷하다고 보면 되려나? 특이한건 서버와 단말 양쪽에 모두 저장되고 쓰이기 때문에 오프라인에서도 단말이 동작 가능하다. 대신 온라인시에 동기화가 발생하면 이벤트로 처리가 가능하다고. 데이타는 총 20MB 저장가능.
  • Device Farm: 수많은 단말 종류를 모두 테스트 할 수 있다고 한다. 방식은 웹상에서 원격으로 조작하는 방식. 요금이 분당 200원정도 하는것 같은데 요긴할듯 하다.
  • Mobile Analytics: Google Analytics와 비슷한 서비스인듯.
  • SNS(Simple Notification Service): Push Gateway정도로 생각하면 될 듯. Android GCM/Apple APNS/FIreOS ADM/WinPhone WNS/WinPhone MPNS/Baidu Cloud Push등을 지원한다. Worldwide SMS는 문자로도 보낼 수 있는 기능. 한국도 포함되어 있음.

# Developer Tools

  • CodeCommit: Git 서버. 버지니아 권역만 제공된다. 곧 확장되려나?
  • CodeDeploy: 배포 솔루션. Jenkins같은 개념으로 생각하면 되겠다. 원격 스크립트 실행 정도로...
  • CodePipeline: Data Pipeline처럼 소스를 대상으로 빌드/테스트/배포 등을 조합할 수 있다.

# Management Tools

  • CloudWatch: CPU, Network등을 그래프로 시각화해서 볼 수 있다. 정책을 정하면 메일등으로 알림을 받을 수도 있다. 단점은 메모리 사용량을 보려면 추가로 스크립트같은 것을 돌려야 한다.
  • CloudFormation: 컴포넌트들 구성을 템플릿화하여 관리할 수 있음.
  • CloudTrail: AWS 로깅. 주로 보안 감사팀이 필요.
  • Config: AWS 자체의 설정을 평가 분석할 수 있음. 인프라 운영팀이 필요.
  • OpsWorks: Chef툴. 인프라 관리 자동화. 코드 배포, 소프트웨어 구성, 패키지 설치, DB 설정 작업들을 자동화 할 수 있다.
  • Service Catalog: 사용자별로 컴포넌트들을 허용/비허용할 수 있다.
  • Trust Advisor: 비용, 성능, 보안등을 점검하고 권장항목을 알려줌.

# Security & Identity

  • IAM(Identity and Access Management): 루트 계정과 사용자 계정 등을 구분하여 관리 가능.
  • Certifcate Manager: 인증서 관리
  • CloudHSM(Hardware Security Module): 암호화 키 보관
  • Directory Service: 윈도우의 사용자 그룹 관리 기능인 Microsoft Active Directory(AD)를 제공.
  • Amazon Inspector: 자동 보안 평가 서비스.
  • KMS(Key Management Service): 암호화 키 관리 서비스
  • WAF(Web Application Firewall): 방화벽 서비스.

# Application Services

  • AppStream: 윈도 어플리케이션을 클라우드에서 실행하고 화면을 단말로 스트리밍. 단말은 FIreOS/Android/Chrome/iOS/MacOS/Win7등을 지원.
  • CloudSearch: 검색엔진 플랫폼.
  • Elastic Transcoder: 미디어 트랜스코딩 서비스.
  • FPS: 결제 관련 서비스인것 같다. 미국내에서만 가능할듯.
  • SES(Simple Email Service): 묘하게 걸그룹 이름이 되어버렸다. ㅋㅋ 이메일 서비스.
  • SQS(Simple Queue Service): 메시지 큐 서비스. Java/Ruby/Python/.NET/PHP/JavaScript/Node.js/REST 등을 지원한다.
  • SWF(Simple Workflow Service): SQS위에 애플리케이션 감시 기능을 추가하여 작업 통제 목적으로 사용할 수 있음. Java/Ruby/.NET/PHP/REST등을 지원함. 대충 훑어본 바로는 AWS내의 여러 컴포넌트들을 사용하면서 작업이 가능한 프레임워크로 보임. 그 단계별 이벤트는 콘솔에 기록이 나옴.
최종 수정: 2021-1-7 15:25:10