AWS

[네전따] 칼럼 기고를 시작하며, [1] AWS를 시작할 때 필요한 기초 키워드

elikim 2023. 2. 19. 21:10

정말 정말 오랫동안 방치해놓은 블로그를 다시 시작합니다.

이유는 그동안 배웠던 내용들을 정리하며 공유하기 위함이고, 네트워크 전문가 따라잡기라는 훌륭한 카페에 칼럼을 기고할 기회를 얻었기 때문입니다.

아직 배운 것이 많지는 않은데 이게 뭐 저만의 이야기겠습니까. 뭐든 배우면 다 처음이죠. 2년차(정확히 1년 8개월차) 엔지니어로서 그간 배웠던 것들을 정말 쉽게 이해될 수 있도록 문돌이의 관점에서 설명하도록 하겠습니다. 물론 수필처럼 제 이야기도 많이 넣을 겁니다!

오늘이 그 첫번째 이야기를 시작하는 날인데요, 어떤 이야기를 할지 아직도 고민입니다.

고민 끝에, 제가 처음 클라우드를 시작하면서 겪었던 고민들을 해결해 나아갔던 과정과 그 과정에서 배운 기술적인 내용들을 함께 나열해보고자 합니다. 

 

2021년 3월 6개월 과정의 네트워크 국비지원 학원을 졸업하며,

학원에서 L2, L3, L4 스위치로 라우팅하는 방법과 메일서버, DHCP, DNS, PXE를 만드는 방법을 약 5개월하고 10일에 걸쳐 알려주었다면 클라우드라는 세계가 있다는 것은 그 나머지 시간에 언급만 해주었습니다.

그런데 네트워크로 IT에 처음 입문한 저도 클라우드가 뭔가 새롭고 신비롭더군요.

클라우드의 베일을 벗겨가던 중 이런 이야기를 읽게 되었습니다.

"점점 클라우드 환경으로 사내 서버가 이관되는데, 과연 네트워크 전문가들이 예전만큼 많이 필요할까?"

지금 생각해보면 많이 필요합니다.
당시에는 이제 막 네트워크 업계에 발을 딛어야하는 New Beginner 입장에서 "앞으로 살길이 막막하지 않을까"란 걱정스런 생각이 들기 시작했습니다. 그 생각은 제 머릿속을 가득 채우게 되고, 학원 졸업 시점에서 하나 둘 동기들은 취업을 해 나아갈 때 독학으로 클라우드를 공부하는 판단을 내리게 됩니다.

가장 시장 점유율이 높은 AWS로 시작해야하는 것은 분명했습니다. 그런데 대체... 뭐가 뭔지 하나도 모르겠었습니다.

처음 접하는 분야를 학습 대상으로 삼았을 때 가장 적정한 공부방법이 어떤 것이 있을까요
여러 접근법이 있을 것이라 생각이 됩니다. 제가 선택한 방법은 "자격증 시험" 이었습니다. 선택을 하게된 로직은 이렇습니다.

만약, 내가 AWS를 잘하는 사람이며 실력이 출중하다면 어떻게 그 실력을 입증할까?
-> 검증된 기관이나 사람으로부터 실력이 있다는 것을 인정 받으면 된다
-> 검증된 기관에서 발급하는 자격증을 취득하면 실력이 있다고 볼 수 있다!

그리하여 입문단계로 가장 적정하다고 평가되는 AWS SAA(Solutions Architect Associate) 시험에 응시하기로 마음먹게 됩니다.
여러 합격수기를 읽어보고 다들 듣는 Stephane의 Udemy 강의를 등록하고 매일 조금씩 수강하며 AWS 프리티어를 이용해 이것 저것 만저보기 시작합니다. 

서두가 너무나 길었지만, 오늘은 처음 AWS를 겪으면서 배우게 되는 것들에 대해 몇가지 적어보겠습니다. 

1. AWS의 서비스 이름

가장 처음 접하실 서비스들은 아마 EC2, VPC, RDS, Route53, S3, CloudWatch 정도 일겁니다. 그 안에는 리전, AZ, 보안그룹, Pem키, 퍼블릭/프라이빗 서브넷, 라우팅, NAT 게이트웨이, 로드밸런서, 타겟 그룹, 클러스터, AMI, 블록 스토리지, 유저 데이터, ACM, SSL 연결... 브레인 스토밍 중인데 정말 끊임 없이 나올 것 같습니다. 이 녀석들이 처음엔 다 "뭐지?" 싶으실 것이라 생각됩니다. 이미 많은 블로그에서 다루는 주제이지만 IT비전공 법대생이 이해했던 방식으로 설명드려보겠습니다. 

  • 클라우드(Cloud = 구름): 클라우드라는 서비스에 본질적인 의문을 던저봅시다. 왜 클라우드라고 이름을 지었을까요. 우리가 사용하고 싶은 여러 컴퓨팅 서비스가 있다고 생각해봅시다. 예를 들면 파일들을 저장하고 불러오기를 한다거나, 아무때나 컴퓨터를 동작시켜서 필요한 작업을 수행하게 한다는 등 입니다. 언제나 하늘에 떠있는 구름처럼, 우리가 필요할 때마다 구름에서 꺼내어 사용하고 다시 구름에 던져 넣으며, 또한 그 속을 볼 수 없는 구름처럼 우리는 그저 사용하는 서비스만 신경쓰고 그게 어떻게 구성되는지는 몰라도 사용에 문제가 없는 그런 이미지를 표방하여 이름 지어졌다고 합니다. 네 저도 우리 정서와는 잘 맞지 않는 설명이라고 생각합니다.

  • 리전(Region = 지역): 말 그대로 지역입니다. 더 정확하게는 서비스 제공 단위로 분류 해놓은 지역입니다. 국가 단위의 리전일 때도 있고 지역 단위일 때도 있습니다. 한국에는 서울 리전이 하나 있습니다. 그러나 일본에는 도쿄와 오사카 등 2개 리전이, 미국에는 버지니아, 오하이오, 캘리포니아 그리고 오레곤 등 4개 리전이 있습니다. 이 리전은 하나의 서비스를 온전히 받을 수 있는 범위를 나타내기도 합니다(글로벌 서비스는 제외입니다😉). 그리고 하나의 리전에는 여러 AZ가 있습니다.

  • AZ(Availability Zone = 가용 영역): 뭔가가 가능한 영역입니다. 처음 AWS를 시작할 때 EC2의 인스턴스를 생성하던게 전부이던 시절, AZ는 그저 사용한 인스턴스 클래스가 제한되거나 안되거나를 결정하는 녀석에 지나지 않았습니다. 그러나 AZ는 가용성을 결정하는 아주 중요한 요소이죠. 내부적으로 보면 AZ는 서로 다른 지역에 위치한 데이터센터입니다. 위에서 말씀 드린 리전이 국가나 지역을 단위로 한다면, AZ는 그 국가나 지역 내에 있는 데이터 센터를 그 단위로 합니다. 하나의 데이터 센터에 장애가 발생하더라도 여전히 다른 데이터 센터에서 필요한 서비스를 수행하기 위함입니다. 또한 AZ의 구체적인 위치는 보안상의 이유로 공개하지 않습니다. 여러 *CSP들은 비용을 절감하기 위해 데이터 센터 플랫폼을 이용하기도 합니다.

    *CSP: Cloud Service Provider, aws나 azure 그리고 gcp와 같은 클라우드 서비스를 제공하는 사업자를 말합니다

  • EC2(Elastic Compute Cloud = 유연한 클라우드 컴퓨팅 서비스): 저 Elastic이라는 말에 현혹되지 마십시오. 저는 처음에 저게 대체 뭘 상징하는 말인지 혼란스러웠습니다. 단순히 고객이 유연하게 서비스를 관리할 수 있다는 의미 정도가 있다고 생각하시면 됩니다.
    그러면 왜 유연한 컴퓨트 클라우드일까요. 고객이 어떤 컴퓨터 유형(인스턴스 클래스)를 사용하고, 어디에 배치(AZ, VPC 내 서브넷)하고, 통신은 어떻게 허용할지(보안 그룹)를 자유롭게 설정할 수 있게 두었기 때문이라고 생각이 됩니다. 정말 유연하게 선택할 수 있어요. 그 내부는 신경쓰지 않아도 되구요. 하지만 더 쉽게 말하면 언제나 원할 때 가상 컴퓨터를 생성하고 접속해서 이용하는 서비스 입니다. 하고 싶은 이야기가 너무 많은데 여기선 일단 이렇게 넘어가겠습니다😀

  • 인스턴스(Instance = 가상 컴퓨터): 인스턴스, VM, 클라우드 컴퓨팅 등 비슷한 명칭이 너무나 많습니다. 암튼 모두 가상 공간에 컴퓨터를 만들고 원격으로 접속해서 사용할 수 있는 컴퓨터를 말합니다. AWS는 "인스턴스"라 하고 GCP와 Azure는 VM이라 합니다. 실제 컴퓨터처럼 성능과 OS를 선택하여 시작시킬 수 있습니다. 인스턴스의 네트워크에 관한 사항은 보안그룹과 ENI(Elastic Network Interface= 가상 네트워크 랜카드 정도로 이해하실 수 있습니다)를 통해 인터넷으로 접근 가능하도록, 혹은 내부 망에서의 상호간 통신 등을 제어할 수 있습니다. 보다 세세한 네트워크 연결관리는 VPC를 다루는 글에서 말씀드리겠습니다.

  • 보안 그룹(Security Group): 네트워크에서 보안을 관리할 때에 다양한 방법을 이용합니다. 보안 그룹은 그 중 하나인 IP주소를 기반으로 한 Inbound와 Outbound를 제어하는 정책을 그룹단위로 관리하는 것입니다. 따라서 하나의 그룹을 공유하는 여러 인스턴스는 서로 같은 보안 정책을 적용받게 되어 관리 편의성을 가져갈 수 있습니다. Inbound는 외부에서 내부로 접근하는 것을 말하며, Outbound는 내부에서 외부로 나가는 것을 말합니다. 대체로 내부에서 외부로 나갈 때에는 보안 이슈가 적기 때문에 모든 트래픽이 허용되나, 외부에서 내부로 접근하는 것은 위험하기 때문에 아무것도 허용되지 않는 것이 기본값입니다. 물론 사용자는 접속이 가능해야하기 때문에 보안 접속인 ssh(22 port)만을 개방하여 사용하는 것이 최초의 사용 사례가 될겁니다. 

  • Key Pair(인스턴스 보안접속을 위한 키 쌍): 왜 키 쌍이냐면 사용자와 AWS가 같이 갖고 있어야 합니다. 그래야 AWS에서 누군가 인스턴스로 접속을 시도할 때 접속자가 해당 인스턴스의 소유주 혹은 그에 준하는 사람의 시도로 인지하고 연결을 받아주겠죠. 주로 Pem을 이용해 키를 발급받아 저장하고 터미널에서 ssh 명령어를 통해 키를 선언하여 접속하시게 될겁니다. 항상 필요한 것은 아닙니다. 패스워드를 통해 접속을 하게 설정을 할 수도 있지만 보안상 Pem키를 사용하여 접근하는 것이 더 좋습니다. 보안 관련된 내용도 언젠가 다룰겁니다😁
  • AMI(Amazon Machine Image = 아마존 인스턴스 이미지): 컴퓨터를 설치할 때 OS를 포함해서 기본적인 설정과 설치 프로그램이 포함되어 배포되는 것을 "이미지"라고 하는걸 들어보셨을 겁니다. 여기서도 마찬가지입니다. AWS에서 인스턴스를 실행시킬 때 이 AMI를 통해 실행하게 되는데요, AWS는 직접 제공하는 다양한 이미지 외에 사용자들이 직접 만들어 배포하는 Market Place에서도 이미지를 가져와서 인스턴스를 생성할 수 있습니다. 경우에 따라 비용을 추가 지불해야할 수도 있으니 참고하세요. 또한 우리가 직접 AMI를 만들어서 저장해두었다가 그 AMI를 통해 새로운 인스턴스를 만들 수도 있습니다. 이 경우 새 인스턴스를 만들때마다 설정해줘야하는 번거로움을 피할 수 있겠죠.
  • S3(Simple Storage Service = 간편한 스토리지 서비스): 여기까지만하고 핸즈온으로 돌아올게요ㅎㅎ AWS의 가장 간편한 스토리징 서비스 입니다. 말 그대로 저장소인데요, 오브젝트 스토리지 형태라 일반 인스턴스에 붙어서 동작하는 볼륨과는 조금 다릅니다. 볼륨 형태로 사용할 수 있는 스토리지는 EBS(Elastic Block Storage)이며 루트 볼륨으로는 쓸 수 없지만 공유 디스크처럼 사용할 수 있는 것은 EFS(Elastic File Storage)입니다. 네, 다들 아시다시피 클라우드 스토리지 서비스로는 오브젝트 스토리지, 블록 스토리지, 파일 스토리지 이 세가지가 있습니다. 각각의 장점과 단점들 그리고 사용 사례에 대해서도 다른 글을 통해 설명드리도록 할게요.

이 외에도 설명드리고 싶은 것이 너무나 많습니다만, 계속 나열만 하다가는 다들 지루해하실 것 같아요..ㅠ
그래서 지금까지 설명드린 개념을 바탕으로 다음 글부터는 핸즈온을 통해 AWS의 기본적인 사용법부터 말씀드리도록 하겠습니다.
다음 글에서는 EC2를 통해 간단한 서버를 하나 올려볼겁니다. 그 서버에 AWS의 여러 기능들을 조금씩 추가해가면서 배워나가는 방식으로 가볼까 합니다. 

관련하여 궁금하신 것이 있다면 댓글을 통해 언제든지 공유해주세요! 확인하는 즉시 답변드리도록 하겠습니다!

읽어주셔서 감사드리며 오늘도 즐거운 하루되시기 바랍니다-!