AWSAA 자격증 준비 (3) – 컴퓨팅

이번 기사는 AWS 서비스에서 꽃이라 할 수 있는 컴퓨팅 서비스에 대해 다룬다. AWS는 컴퓨팅 서비스는 다음과 같이 3단계로 나뉜다.가상머신(Virtual Machine) 컨테이너 서비스(Container) 서버리스(Serverless)가 3개인 단말기는 점차 아래로 갈수록 가상화 수준이 높아진 것으로 보인다.

출처 : https://velog.io/@highway92/EC2-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0

가장 대표적인 서비스는 EC2(Elastic Computing) 서비스다. EC2는 가상 머신이라고 생각하면 되지만 EC2를 런치하면 전 세계 AWS 영역에서 물리 서버가 EC2 인스턴스를 호스트하게 된다. 몇 분 안에 프로비저닝해 사용할 수 있는 서비스로 자신이 원하는 성능으로 다양한 유형을 지정해 생성할 수 있다. 이 성능마저도 자유롭게 크기를 조절할 수 있다. 또 종량제로 사용한 만큼 요금을 내면 된다.

AWSEC2EC2 서비스를 이용할 때 몇 가지 알아야 할 용어가 있다.가상 머신이기 때문에 생성할 때 필요한 OS 타입을 지정할 필요가 있다(리눅스, MacOS, Windows 등), 그 다음에 지정할 필요가 있는 것이 AMI(Amazone Machine Image)이다.아마존에서 이미 ready-made로 준비한 이미지다. 운영체제, 스토리지 매핑, 권한이 세팅되어 있다.콘솔에서 t2.micro, t3.micro와 같은 이름으로 볼 수 있는데, 이 이름은 여러 줄임말을 합친 것이다.t3.micro→t: 인스턴스 패밀리, 3:세대, micro: 인스턴스 크기(VCPU, RAM, 네트워크 성능) 인스턴스 패밀리는 유형에 따라 나뉘는데 범용/컴퓨팅 최적화/accelerated 컴퓨팅(GPU), 스토리지 최적화 등이 있다.유형에 따라 스펙의 크기를 조정할 수 있다. 최신 세대일수록 트랜잭션당 평균 비용이 낮다.아마존에서 만들어 놓은 이미지 외에도 AWS 마켓플레이스를 통해 다른 이미지를 사용할 수 있거나 아예 새로 생성할 수도 있다.인스턴스 라이프 사이클이 처음 인스턴스를 시작하면 ‘대기 중(Pending)’ 상태로 이행된다.이후 정상으로 돌아오면 ‘실행 중(Running)’ 상태가 돼 사용자가 ‘재기동’ 또는 ‘중지’, ‘종료’를 할 수 있다. 「재기동」과 「중지」는 전후 「실행 중」의 상태일 것이다.공유 및 전용 테넌트(Tenancy) 전용 테넌트: default.물리적인 서버 위에 가상머신(EC2 인스턴스)을 띄우는 형태이며, 이때 복수의 사용자가 공용 가상머신에 액세스하게 된다.전용 인스턴스: 물리적 서버 선정 전용 호스트: 하드웨어 선정 사용자 데이터(User Data) 인스턴스가 시작된 후 루트 사용자에서 실행될 스크립트를 지정할 수 있다.공통 자동화 구성 작업을 수행하기 위해 사용된다. 예를 들어, 복수의 서버를 표시하는데, 그 서버가 프로비저닝된 후에 실행해야 할 공통 명령어(패키지 설치, 웹 서버 설치 등)를 지정할 수 있다.키페어(Key Pair) AWS에서 인스턴스를 생성할 때 보안의 이유로 Key Pair를 생성할 것을 권장하는 편이다. 퍼블릭 키는 AWS로 보관하고 개인키를 로컬로 저장해 EC2 로그인 시 개인키를 제시하도록 하는 기능이다.EC2 요금제 옵션 주문형 인스턴스: 사용할 시간만큼 지불. 단기간 혹은 최초 개발 단계라면 사용하는 것이 좋다.스폿 인스턴스: 유연한 워크로드의 경우에 사용하면 좋다. 중간에 중단되더라도 괜찮은 배치성 업무를 수행할 때 이용하기 쉬운 옵션. 이 옵션은 정책상 스폿 인스턴스 사용자가 컴퓨팅 리소스를 사용하고 있으며 예약자가 이용하는 시간이 도래하면 2분 이내에 스폿 인스턴스가 종료된다.Savings Plan: 최고의 유연성을 가진 옵션으로 대표적으로 컴퓨팅 Savings Plan이 있다. 일종의 약정으로 인스턴스 패밀리/지역/OS/임대인/컴퓨팅 옵션을 변경하거나 지정할 수 있다. EC2 외에 AWS 람다 같은 서버리스 서비스에도 약정을 걸고 싶을 때 사용한다.예약 인스턴스: 온 디맨드보다 훨씬 많이 사용되는 경우 미리 예약, 즉 약정을 걸고 사용하는 것이다.표준예약 인스턴스: 주문형 요금에 대해 최대 72% 할인. 사용량이 지속적일 경우 인스턴스 패밀리를 약정하는 요금제 옵션이다.컨버터블 예약 인스턴스: 주문형 요금 대비 최대 50% 할인. 예약 인스턴스의 속성을 변경 가능하지만 변경하고 싶은 인스턴스의 속성이 동일하거나 더 높은(성능이 좋은) 옵션일 때 가능하다.AWSEC2도 구독 서비스처럼 약정을 미리 걸어둘수록 저렴한 편이고, 나열된 요금제 옵션은 점차 아래로 내려갈수록 저렴한 편이다.인스턴스 스토어 볼륨 vs EBS(Elastic BlockStore)

소스 링크 참조 인스턴트 볼륨: 지속적이지 않은 휘발성 볼륨. 인스턴스가 활성화된 경우에만 유지되는 볼륨. 스냅샷을 지원하지 않는다.EBS : EC2와는 별도로 생성(독립적)되어 호스트와 네트워크로 연결되어 비휘발성.스냅샷을 지원한다. 물리적 하드 드라이브처럼 사용 가능.EBS를 분리해 다른 인스턴스에 붙여넣는 것도 가능 배치 그룹 EC 22대 이상에서 사용할 경우에는 유의미한 기능이다.여러 인스턴스가 가까이 있기를 원하는 경우 아래 3개의 배치 그룹을 지정할 수 있다: 분산 배치 그룹, 파티션 배치 그룹, 클러스터 배치 그룹 상세 정보:https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/placement-groups.htmlAutoScalingEC2 서버 수를 늘리거나 크기를 확장하는 방식이다. 내결함성 향상, 애플리케이션 가용성 향상, 낮은 비용 추구의 장점을 가지고 있다. 수직 크기 조정/수평 크기 조정으로 나뉜다. Launch Template를 생성하여 최소 용량, 원하는 용량, 최대 용량 등 3가지를 지정하게 된다. 조정에는 예약, 동적, 예측의 3가지가 있다. 예약 – 예측 가능한 워크로드 동적 – 일반적인 스케일링, CloudWatch와 같은 지표 모니터링 기능에 축소/확장 예측 – 가장 쉽고 반복적인 워크로드(배치 등), 주기적인 트래픽 등

이상 AWS의 EC2와 관련된 용어와 기능을 모두 정리했다. EC2가 가장 많이 사용되는 서비스인 만큼 숙지해야 할 개념과 기능도 매우 많다. 콘솔에서 직접 EC2를 생성해보면 이 용어들이 더욱 친숙하게 느껴질 것이다.

AWS 컨테이너 서비스 컨테이너는 가상 머신과 달리 격리된 채 서로 OS를 공유하고 바이너리/라이브러리를 공유하게 된다. 그러나 가상 머신은 격리되며 동일한 이진/OS/라이브러리를 공유하지 않는다. 이런 컨테이너 서비스는 마이크로 서비스 때문이다. 마이크로 서비스는 독립 서비스로 구성된 애플리케이션을 의미하는 것으로 모놀리스틱(monolithic) 서비스와 반대되는 용어이다. 마이크로 서비스에 의해 궁극적으로는 개발자에게 자율 개발을 가능하게 한다. 마이크로 서비스 아키텍처를 통해 개발자는 애자일에 소프트웨어 개발을 수행할 수 있으며, 이를 통해 서비스 지향 아키텍처를 설계할 수 있다. 또한 서비스 독립성을 통해 장애 저항성을 높여준다.AWS의 컨테이너 서비스는 다음과 같다. – ECR(Amazon Elastic Container Registry): 이미지를 저장하고 재사용할 때 저장하는 서비스 – ECS(Elastic Container Service): 컨테이너 오케스트레이션 서비스 – EKS(Elastic Kubernetes Service): AWS에서 k8s 실행. 작업자 노드에서 컨테이너화된 애플리케이션 실행 – AWS Pargate : 컨테이너 실행 시 EC2 상에 컨테이너 배포 과정을 담당. 컨테이너를 시작하면 Fargate가 모든 기본 컨테이너 인프라를 관리하게 된다. ECS, EKS 모두 Fargate를 기반으로 하고 있다.ECS, EKS, Fargate에 대해서는 다른 블로그 투고에 자세한 설명을 해 두었으므로 생략하고 싶다.https://blog.naver.com/ilovelatale/222251223353GlossaryECS-dockersupportedEKS-kubernetessupported 두 개념 모두 containerorchestrati…blog.naver.com

AWS 서버리스 마지막으로 AWS의 서버리스 서비스는 다양한데, 그 중에서도 AWS Lambda와 AWS Pargate, AWS Step Functions에 대해 정리하고 싶다.

AWS 서버리스포트폴리오, 출처 사진링크 참조 서비스 소개를 시작하기 전에 서버리스라는 개념이 등장하게 된 배경에 대해 간단히 설명하자면, 서버리스는 monolithic(모놀리스식)→micro 서비스→서버리스 순으로 점차 발전하게 되었다. 단계를 거듭할수록 가상화 수준이 높아지면서 개발자들이 점점 밑단 올리기 인프라에 대한 유지보수 관할을 줄이면서 애플리케이션 수준 차원에서 개발에 주력할 수 있게 됐다.덧붙여서 다음의 투고인 네트워크 편에서 이야기하지만, 서버리스는 VPC 밖에서 동작하게 된다.

AWS 람다 AWS 람다는 AWS 서버리스 서비스 중 대표적인 것으로 일종의 함수처럼 작동한다. 람다는 아키텍처상 대부분 AWS 서비스 사이에 많이 두고 있는 것 같다. 사이에 둔다는 의미는 A라는 서비스에서 B라는 서비스로 넘어갈 때 람드바를 거치도록 구성한다는 의미다. 예를 들어, 나는 앱 개발자로서 앱 로그를 모니터링하려고 AWS 키네시스(Kinesis)에서 실시간 로그를 수집하는데 로그가 끌릴 때마다 램다를 trigger하고 동작시키는 것이다. 람다는 키네시스에게 넘어온 로그를 가공처리하도록 프로그래밍돼 있다면 이 람드바로 다듬어진 로그는 스토리지에 저장하도록 결과물을 다른 서비스에 넘기는 것이다. 물론 이 외에도 람드바 이후 외부 서비스를 호출하도록 구성할 수도 있다.

람다는 서버리스 특성상 프로비저닝 또는 관리할 서버가 없다. 이 의미는 내가 만약 EC2로 프로그래밍하려면 서버를 프로비저닝한 후 서버 내에 텍스트 에디터(vim 등)를 설치하여 코딩을 한 후 언어에 따라 Runtime 설치를 한 후 실행해야 한다. 그러나 Lambda는 이 모든 과정을 필요로 하지 않는다. 서버리스 함수이기 때문에 AWS가 인프라는 모두 관리하게 된다. 사용자는 그냥 람다에서 필요한 프로그래밍만 하면 된다.람드바는 사용량에 따른 크기 조정이 가능하며 다른 서비스와 마찬가지로 사용한 리소스만큼 요금을 지불하면 된다. 또한 AWS가 가용성 및 내결함성 서비스를 제공한다는 장점이 있다.

Lambda가 지원하는 runtime에는 Java, Node.js, Python, Go, C#이 있다. Lamdba 생성 시 기본적으로 lambda_handler() 함수가 생성되는데, 이는 main()과 같은 함수로 보면 된다. 이 함수 내부에 implement 할 프로그래밍을 작성하게 된다. Amazon Docs에서 사용하는 Sample Lambda Implement Code는 다음과 같다.Lambda 생성 시 트리거를 지정할 수 있다. 트리거는 람다가 작동하기를 원하는 조건을 지정하면 된다.람다는 최대 15분간 실행되며 최대 10GB 메모리를 지원한다.

AWS 파게이트 AWS 파게이트는 서버리스 컴퓨팅 엔진으로 ECS, EKS에서 많이 등장하는 서비스다. 우리가 AWS 컨테이너 서비스인 ECS, EKS를 사용하게 되면 EC 2위에 컨테이너를 배포하게 되는데 이 과정을 담당한다. 즉 컨테이너를 시작하면 Fargate가 모든 기본 컨테이너 인프라를 관리한다. ECS, EKS 모두 Fargate를 기반으로 하고 있다. ECS와 EKS는 Fargate를 사용하면 컨테이너를 위한 인스턴스를 관리할 필요 없이 컨테이너 자체만 배포할 수 있게 해준다. Fargate 이외에 선택할 수 있는 옵션(Launch Type)은 EC2이지만 EC2에 대한 풀컨트롤이 필요한 컨테이너 배포의 경우 Fargate가 아닌 EC2를 선택하게 된다.

출처 : http://aws.amazon.co m/ko/blogs/korea/aws-fargate/

AWS StepFunctions

이 서비스는 위 사진을 보는 것이 글보다 명확하게 이해할 수 있다. 첨부된 사진과 같이 이 서비스는 원하는 작업에 대한 절차도를 작성하는 서비스이다.

JSON 문서 형태로 순서도를 작성하는데, 각 순서도의 노드가 ‘state’, 순서도 자체는 ‘State Machine’이라 불린다.각 노드는 분기 또는 병렬로 놓고 작업을 적절한 순서로 처리할 수 있다. 이처럼 스텝펀션은 시각적 워크플로우를 통해 마이크로서비스 조정이 가능하다. 애플리케이션 기능을 단계별로 실행할 수 있으며, 각 단계를 자동으로 기동하여 추적하게 된다.이밖에 이후 포스팅에서 설명하는 AWS QS, SNS 역시 서버리스다.

error: Content is protected !!