Search
Duplicate
🧑‍💻

AWS 입문 [22.9/Jarvis]

Created
2022/10/06 10:37
Tags
이누쓰데이
날짜

인사말

이누씨 개발팀에서 신규사업 개발을 담당하고 있는 자비스입니다.
핵심만 골라보는 AWS 라는 주제에 대해 공유하려고 합니다.

들어가며

AWS(Amazon Web Service) 아마존닷컴의 클라우드 컴퓨팅 서비스입니다.
대표적인 클라우드 서비스는 Microsoft의 Azure, Google의 GCP(Google Cloud Platform)가 있으며, 이중 aws는 33%로 시장점유율 1위를 차지하고 있습니다.
글로벌 클라우드 서비스 제공업체 중, 가장 폭 넓고 깊은 서비스를 제공하기 때문에 AWS를 선택했습니다.
특히 개발자들이 클라우드를 처음 접하는 경우 서비스 구성에 어려움이 있는데 AWS는 참고할 매뉴얼이나 레퍼런스가 다양하기 때문에 개발이 용이합니다.
주요 고객으로는 당근마켓, 컬리(Kurly), 크로키닷컴 – 지그재그, SBS I&M, MBC, POOQ 등 많은 기업들이 있습니다.

AWS 주요 서비스

EC2 (Elastic Compute Cloud)

탄력적인 웹 스케일 컴퓨팅 - Auto Scailing을 통한 자동 확장 및 축소
유연한 클라우드 호스팅 서비스 - MacOS, Linux, Windows 중 OS 선택이 쉽게 가능
저렴한 비용 - 사용한만큼 지불

S3 (Simple Storage Service)

안전하고 가변적인 Object 저장공간을 제공
편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있음
파일 크기는 0KB부터 5TB까지 지원
저장공간 무제한
저장 용량, GET, PUT 요청 횟수, 다운로드 에 따라 사용한만큼 요금 지불
리전간 복제 기능 제공

활용 사례 - Amazon S3, 누구나 사용 가능합니다!

맥북을 포맷해야되는데, 백업해둔 사진의 데이타를 저장할 별도의 백업용 공간이 없었습니다. 23기가정도 되는 사진 파일을 약 30분만에 Amazon S3에 업로드한뒤 포맷했던적이 있습니다!! (1기가당 0.025달러 = 약 600원)
개인 프로젝트를 Amazon Lightsail의 저렴한 서버를 사용해서 배포하고 있습니다. 이미지 업로드 기능을 구현하는데 있어서 이미지 파일을 어디에 저장해야 하나 고민했습니다. 용량이 한정적인 서버 내 로컬 디스크 대신 Amazon S3를 사용함으로써 서버 디스크 용량 부족 걱정 없이 안정적으로 이미지 정적 파일을 제공할 수 있었습니다.
네이버 스마트스토어에 상세 제품 페이지를 자동으로 올리는 프로그램을 만들어보는 중입니다. HTML 파일을 벌크로 만들어서 올리려면, 이미지 호스팅이 필요합니다. 기존 스토어 전용 이미지 호스팅 서비스들이 이미지 관리도 힘들고 엄청 비싸더군요. 그러다 Amazon S3로 관리하면 어떨까 싶어서 Amazon Cloudfront로 붙여 제공하니, 별도 구축비용도 없고 관리도 편리해서 너무 좋았습니다. 기술적으로 효율을 높힌건 아니지만 이렇게 실생활(?)에 S3같은 AWS 서비스가 사용되는 신선한 경험을 해봤습니다. 초기에 비싼돈 주고 이미지 호스팅 하시는 분들도 S3를 아시면 좋을것 같아, 비개발자 분들도 스마트스토어 이미지호스팅을 간단하게 구축 할 수 있게 S3 사용법등을 적고있습니다.
AWS로 서비스를 옮기기 전에는 사용자들의 자료들을 자체 웹 서버의 파일 서버에서 제공했는데요. AWS로 옮기고 난뒤, 모든 사용자 파일들을 토큰을 받아 Amazon S3에서 바로 다운로드받게 하였습니다. 웹서버의 부담과 비용을 획기적으로 줄였습니다. 그래서 사용자들에게 무료 서비스를 제공가능하게 되었습니다. Eduhub라는 교육 서비스를 혼자 만들고 제공하는 1인 기업인데, S3를 비롯한 다른 AWS 서비스가 없었다면, 불가능한 일입니다.

RDS (Relational Database Service)

관계형 데이터베이스(MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Aurora)를 간편하게 설정, 운영 및 확장 가능
자동 백업 - 데이터베이스 인스턴스를 특정 시점으로 복구 가능, 자동 백업 보존 기간은 최대 35일
데이터베이스 스냅샷 - 스냅샷을 백업해두면 원하는 경우 언제든 스냅샷으로 새 인스턴스 생성 가능
Multi AZ 배포 - DB 서버를 동기화(Synchronous) 구성하면 특정 가용 영역(AZ)에 장애가 발생해도 다른 가용 영역에 복제된 데이터베이스를 바로 사용할 수 있도록 시스템이 자동 대체(Failover)되어 고가용성을 유지
서버리스 컴퓨팅 플랫폼 - 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.
Lambda API를 사용하여 함수를 직접 호출하거나, 함수를 호출하도록 AWS 서비스 또는 리소스를 구성할 수 있습니다.

사용 사례

실시간 파일 처리 - Amazon S3를 사용하여 업로드하는 즉시 데이터를 처리하도록 AWS Lambda를 트리거할 수 있다. Lambda를 사용하여 실시간으로 이미지를 썸네일하고, 동영상을 트랜스코딩하고, 파일을 인덱싱하고, 로그를 처리하고, 콘텐츠를 검증하고, 데이터를 수집 및 필터링할 수 있다.
실시간 스트림 처리 -  Amazon S3를 사용하여 업로드하는 즉시 데이터를 처리하도록 AWS Lambda를 트리거할 수 있다. Lambda를 사용하여 실시간으로 이미지를 썸네일하고, 동영상을 트랜스코딩하고, 파일을 인덱싱하고, 로그를 처리하고, 콘텐츠를 검증하고, 데이터를 수집 및 필터링할 수 있다.
추출, 변환, 로드 - AWS Lambda를 사용하여 DynamoDB 테이블의 모든 데이터 변경에 대한 데이터 검증, 필터링, 정렬 또는 기타 변환 작업을 수행하고 변환된 데이터를 다른 데이터 스토어로 로드할 수 있다.
IoT 백엔드 -
AWS Lambda 및 Amazon Kinesis를 사용하여 사물 인터넷(IoT) 디바이스 데이터 텔레메트리 및 분석을 위한 백엔드를 구축할 수 있다.
모바일 백엔드 -
AWS Lambda 및 Amazon API Gateway를 사용하여 API 요청을 인증 및 처리하도록 백엔드를 구축할 수 있다.
웹 애플리케이션 -
AWS Lambda를 다른 AWS 서비스와 결합하면, 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 애플리케이션을 구축할 수 있다.

VPC (Virtual Private Cloud)

독립적인 가상의 네트워크 공간으로 사용자의 설정에 따라 자유롭게 구성할 수 있는 공간을 의미합니다. 따라서 사용자는 서브넷 생성, 라우팅 테이블, 네트워크 게이트웨이 구성 등 네트워킹 환경을 사용자가 원하는 대로 완벽하게 제어할 수 있습니다.

Lightsail (VPS, Virtual Private Server)

인스턴스(가상 프라이빗 서버), 컨테이너 서비스, 관리형 데이터베이스, 콘텐츠 전송 네트워크(CDN) 배포, 로드 밸런서, SSD 기반 블록 스토리지, 고정 IP 주소, 등록된 도메인의 DNS 관리, 리소스 스냅샷(백업) 등 프로젝트를 신속하게 시작하는 데 필요한 모든 것을 저렴하고 예측 가능한 요금으로 사용할 수 있습니다.

ETC

Amplify

모바일 및 프런트엔드 웹 개발자가 AWS를 기반으로 안전하고 확장 가능한 풀 스택 어플리케이션을 구축 및 배포할 수 있도록 지원하는 제품 및 도구입니다. 인증, api(GraphQL, REST), 스토리지, 상호작용, pubsub, 데이터스토어, 기능, 분석, AL/ML 예측, 푸시 알림,관리형 호스팅, CI/CD, 브랜치 배포 등 다양한 기능을 제공하고 있습니다.

AWS 시작해보기

step1. 계정 만들기
step2. 목적 정의하기
step3. 검색, 문서 정독하기
step4. 일단 시작하기

향후 AWS 활용

현재 진행중인 신규 프로젝트에서는 EC2, RDS, S3, Amplify, Lambda, CodePipeline, Auto Scaling, SNS 등을 이용해 구축하고 적극적으로 클라우드 서비스를 활용해 서비스를 만들어나갈 예정입니다.

시사점

생각보다 어렵지 않고 배우고자 한다면 누구나 쉽게 적용해 볼 수 있습니다.
AWS를 잘 활용한다면 적은 리소스로 최대의 효과를 낼 수 있습니다.
전문 인력에 대한 부담 축소 (네트워크, 데이터베이스, 보안 등)
글로벌 확장에 용이
목적에 따른 다양한 서비스 제공