본문 바로가기

CS연구소👨‍💻

[AWS] 책 AWS 구조와 서비스 읽기 : Chapter 2

들어가며

AWS 클라우드는 서비스를 일반 대중한테 보여줄 수 있다는 점에서 개발자의 꽃이라고 생각한다. 개발자는 어쨌든 자신의 서비스를 남들에게 인정받아야하니까

그런데 문제는 AWS가 처음하는 사람한테는 좀 보기 까다롭게 되어있다는것이다, 그리고 서버 배포는 돈이랑 관련되어있고 몇백 몇천만원이 결제되었다는 괴담도 많이 들리기 때문에 초심자들은 생각보다 더욱 AWS를 쓰는데 소극적일 수 밖에 없다. 그러다보니 나를 포함한 많은 사람들이 AWS에서 제공하는 많은 서비스를 활용해보려한다기보단 정말 필요한 EC2, S3 정도만 빠르게 해보고 건들이지 않는 것 같았다.

그래서 이번에는 AWS의 구조를 다룬다는 이 책을 읽어보고 요약하면서 AWS를 이해하고 또 같은 문제점을 안고있는 사람들에게 도움이 되고자한다. 최대한 저작자의 저작권을 지키기 위해서 책의 내용을 실습해서 적는 것을 위주로 진행하려고한다.

또한 책은 최대한 필요한 부분만 요약해서 설명하되 모든 페이지가 어떤 테마를 가지고 설명하고 있는지를 인덱스로 나열해서 나중에 책을 읽을 사람들한테 도움이 되는 방식으로 쓰겠다.

목차 : 대분류

  1. AWS 기초지식
  2. AWS 사용 시작
  3. 컴퓨팅 서비스
  4. 스토리지 서비스
  5. 네트워크 및 콘텐츠 전송 서비스
  6. 데이터베이스 서비스
  7. 보안관련 서비스
  8. 알아두면 좋은 기타 서비스

일단 이 분류중에서 1번은 생략하기로 했다, 1번은 클라우드의 특징, AWS의 장점 같은 부분들이 적혀있기 때문에 딱히 나에게 필요한 내용이 아니었다 오늘은 여기서 챕터 2부터 공부하려고한다.

AWS 사용 시작

AWS 계정 생성 ( 26 ~ 29p )

aws 계정을 만드는 내용을 설명한다 생략

AWS 사용 방법 ( 30 ~ 34p )

이 페이지에서는 AWS를 다루는 3가지 방법을 얘기한다.

웹 브라우저

우리가 흔히 만나는 AWS창이라고 할 수 있다. GUI이기 때문에 클릭으로 제어할 수 있어서 좋지만 AWS자체가 이런저런 서비스가 많기 때문에 여전히 어렵다.

CLI를 사용

aws는 우리가 사용하는 OS의 쉘 스크립트를 이용해서 자신들의 서버를 제어할 수 있도록 설정해두고 있다. 나는 관련된 설명은

 

최신 버전의 AWS CLI설치 또는 업데이트 - AWS Command Line Interface

이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이

docs.aws.amazon.com

여기 나오는 공식 설명서에 잘 나와있다. 내가 macOS를 사용중이기 때문에 macOS를 보면

다음과 같은 몇줄의 코드로 되어있는 것을 확인할 수 있다.

AWS에 어려움을 겪고 있는 사람이라면 저기서 나오는 curl, sudo 등도 헷갈릴 수 있는데.

sudo : superuser do라는 뜻, 관리자권한과 같다

curl : Client url 그냥 브라우저가아닌 쉘 스크립트로 인터넷에 있는 데이터를 가져오는 것

정도로 크게 어렵지 않은 내용들이다.

특히 Mac os의 경우 sudo가 설치되어있지 않다고 고민할 사람들이 있을텐데 MacOS의 버전관리 시스템인 brew를 써서

brew install sudo 

를 해주기만하면 된다.

사실 이런 cli 툴은 설치가 문제가 아니라 제대로 사용하는 것이 문제라고 할 수 있는데 여기선 모든 명령어를 설명할 수 없으므로

 

aws — AWS CLI 1.32.117 Command Reference

 

docs.aws.amazon.com

 

다음 링크를 참조하는걸 권한다.

SDK를 사용


SDK는 shell 스크립트 말고 C++, 자바 같은 개발언어들을 이용해 AWS를 관리하는 것을 의미한다.

SDK를 사용하면 웹 프로그램 자체가 S3 같은 저장소에 파일을 저장하거나 예외 로직을 처리하는등 고급 작업이 가능하다. CLI는 우리가 직접 스크립트를 입력한다는 점에서 차이가있다.

C++의 경우엔 다음 깃헙 링크에서 SDK 프로그램 빌드가 가능하다.

 

GitHub - aws/aws-sdk-cpp: AWS SDK for C++

AWS SDK for C++. Contribute to aws/aws-sdk-cpp development by creating an account on GitHub.

github.com

 

이부분은 아직 나도 사용해본적이 없어서 좀 더 공부를 해보고 심화과정을 써야겠다.

AWS 서비스 이용 시각화 ( 35 ~ 37p )

어쩌면 우리한테 가장 민감할 비용에 관련된 내용이다.

비용의 확인

내 서버의 비용을 확인하는 방법은 오른쪽 상단 콘솔의 내정보에서 결제 대시보드를 확인하면된다.

그럼 AWS내부에서

이런 화면을 볼 수 있는데

내가 지난달에 사용한 비용, 이번달에 사용중인 비용, 예상등을 확인할 수 있다.

 

또한 비용 관리 왼쪽 하단에 보이는 Cost explorer에서 비용에 대한 상세 분석을 확인할 수도 있고 오른쪽 Budgets을 설정해놓으면 비용이 내 예상을 뛰어넘게 발생하는걸 방지할 수 있다.

다만 특정 비용을 초과한다고 하더라도 서버를 자동으로 꺼주거나 하는 서비스는 존재하지 않는다.

AWS 리전 설정 ( 38 ~ 41P )

AWS는 전세계 곳곳에 서버가 있기 때문에 서버를 열 때 어떤 지역에서 열지 정할 수 있다. 한국은 ap-northeast-2 에 속한다.

그리고 각 리전도 각각 복수의 가용영역 (AZ) 를 구성한다. 이들은 모두 독립적이고 AZ끼리는 고속의 암호화 통신을 사용한다.

AZ 이름은 AZ ID라는 식별자와 일대일로 대응되는데 이 AZ이름은 aws 계정마다 각각 다르다.

그리고 나는 사용해본적 없지만 아마존 네트워크 서비스인 Amazon VPC에서는 서브넷(한 네트워크 주소를 더 작은 주소로 쪼개놓은 것)을 생성할 때 AZ를 선택해서 여러곳에 자원을 배치할 수 있다고 한다. 우리가 쓰는 S3도 3개이상의 AZ에 데이터를 저장해놓는다고한다. 이런 AZ를 적극 활용해서 자원배치를 할 수 있다면 좋을 것 같다.