studying data

문제의 본질을 꿰뚫어 해결책을 찾는 법을 공부합니다

콤퓨타 공부/AWS 걸스인텍 멘토링

[AWS 멘토링] 클라우드와 AWS 네트워크

study_data study_data 2021. 8. 25. 21:44
클라우드가 뭐에요?

서버를 구축하지 않고 남이 구축한 것을 가져다 쓰는 것이 아닐까요..?

 

클라우드는 구름(Cloud)인데 여기서 구름은 인터넷입니다. 인터넷 뒤의 여러가지 서비스를 이용하는 것이라고 생각할 수 있습니다. 예를 들어 서버나 storage, DB가 있을 수 있죠. 이런것들을 임대해서 쓰는 것이에요. 우리는 이런 서버 자원을 빌려서 이용합니다. 그런데 내가 서버를 구축할 필요가 없는 것은 아니에요. 자원을 활용해서 AWS 클라우드 상에서 클라우드 아키텍쳐는 직접 구성을 해야 하거든요.

 

온프레미스(On Premise)는 기존의 전통적인 인프라 환경입니다. 학교나 회사의 지하에 가면 큰 공간에 커다란 기계가 들어있는 것 본 적 있나요? 맞아요! 큰 서버 컴퓨터가 있어요. 기존의 서버는 회사에서 서비스를 하기 위해 서버를 물리적으로 가지고 서비스를 했습니다. 그게 전통적인 인프라 환경이에요. 그런데 물리적인 하드웨어로 가지지 않고도 클라우드에서 소프트웨어처럼 사용할 수 있는 것이 바로 클라우드로의 전환이죠. 기존에 내가 물리적으로 가지고 있었던 서버 자원 같은 것들을 소프트웨어처럼 가지고 갈 수 있습니다. 내가 물리적으로 서버를 옆에 두고 쓰느냐 아니면 인터넷을 통해 빌려서 쓰느냐가 다른 부분입니다. 그래서 한마디로 인터넷 뒷단의 여러 가지 것들을 사용하는것이에요. 좀 더 전문적으로 말해볼까요? API 호출을 통해서 자원을 call해서 이용하는 것이에요.

전통적인 인프라 환경 위에서 등장한 것이 클라우드이기 때문에, 클라우드 환경은 항상 온프레미스와 대비해서 이야기합니다. 예를 들어 ec2인스턴스 서비스 같은 것들은 서버를 가상의 환경으로 구현해놓은 개념이니까요. 갑자기 하늘에서 뚝 떨어진 것이 아니에요. 그래서 아키텍쳐를 잘 하기 위해서는 전통적인 환경에 대해 이해해두면 좋죠! 앞으로 IT 관련해서 일을 하게 된다면 사람들로부터 '온프렘과 대비해서~'라는 말을 많이 들을 수 있는데, 무슨말인지 이해하기 위해서 간단하게 설명해봤습니다.

 

왜 이렇게 많은 서비스들이 클라우드로 이관하고 있는지, 장점은 무엇인지 아나요?

클라우드의 이점은 6개로 나뉘어집니다. 클라우드가 왜 중요하냐, 왜 써야 하냐는 답변을 하기 위해서 장점을 기억하는 게 좋습니다. 참고로 비즈니스적 관점에서 장점이에요. 요점을 먼저 살펴보고 설명도 살펴봅시다.

신속한 인프라 도입
유연한 인프라 관리
예상치 못한 트래픽 폭주 대응
손쉬운 글로벌 서비스
강력한 보안과 장애 없는 서비스
합리적인 요금제

_출처: 아주경제 기사 [클라우드 이해하기] 中 

 

첫번째, 선투자 비용이 없습니다. 온프렘 환경에선 서비스를 하기 위해서 물리적인 하드웨어를 구매하고 그것을 활용해서 서비스를 구축해야합니다. 데이터 센터를 구축하기 위해선 굉장히 많은 선투자비용이 들겠죠? 다 사야하니까요! 그런데 클라우드에서는 이야기가 달라집니다. 내가 아키텍처를 구축해봤는데 서비스가 잘 안된다고 하면 언제든지 끌 수가 있습니다. 한 번 사면 영구적으로 가지고 가야하는 온프렘 환경과는 차이가 있죠. 클라우드는 가변적 성격이 있어서 끌 때 끄고 켤 때 켤 수 있는 것이에요.

게다가 절세효과도 상당히 큽니다. 이건 비즈니스적 입장이 정말 큰 장점이에요. 예를 들어볼까요? 자동차를 구입해서 가지면 자산으로 취급돼 우리는 세금을 냅니다. 그러나 렌트를 하면 어떻게 되나요? 물론 비용이 들지만 절세를 할 수 있는 좋은 방법이 되죠. 가게를 열고 싶어서 땅을 사고 건물을 지어올려서 시작하는 것이 온프렘의 방식이고, 임대해서 지어진 공간에 쏙 들어가서 내부적으로 꾸며 사업을 시작하는 것은 클라우드의 방식인 거에요. 그래서 클라우드를 쓰면 인프라 비용으로 잡히기 때문에 절세 효과가 큽니다.

실무적인 장점도 있어요. 클라우드에선 애자일한 개발환경이 가능합니다. ec2 인스턴스에서 자원을 확보하는 데 몇 분이면 됩니다. 클라우드에서는 정말 몇 분이면 정보를 확보할 수 있어요! 그래서 좀 더 민첩한 개발환경 구축이 가능한 것이구요. 환경 구축을 위해 중요한 것이 서비스를 위한 사이즈 측정, 서버 사이징인데요. 온프렘은 서버 사이징에 소요되는 노력과 시간이 상당히 많이 들었어요, 영구적이니까요. 그런데 클라우드에서 사양이 안나오면 다른 인스턴스로 변경하기가 쉽습니다. 서버사이즈 추정에 소요되는 시간이 아껴진다는 장점이 있는 것이죠. Fast Fail이 가능해서 다양한 혁신이 가능해집니다. 서비스를 하는 것보다 좀 더 애자일한 환경을 구축할 수 있고, 탄력적인 아키텍쳐가 가능한데다 서비스 프로바이더가 구축해놓은 인프라 자원들을 클릭만으로 손쉽게 이용할 수 있습니다.


Q&A 클라우드에서 사양이 안나오면 다른 인스턴스로 변경하기가 쉽다는 게 무슨 뜻인가요?

서버 컴퓨터는 사양이 다양해요. 사용하고 있는 노트북만 해도 듀얼코드인지 메모리는 얼마인지에 따라 엄청나게 달라지죠? 그 다양한 것 중에 어떤 것을 선택해야하는지는 더 고민이 되겠죠. 그래서 전통적인 환경에서 서버 컴퓨터를 구매한다고 하면 서버사이징하는데 소요시간이 컸습니다. 한 번 사면 고장날 때까지 가지고 있어야 하니까요. 그런데 서버에서는 클라우드 내 대응되는 개념으로 ec2 instance를 개발했습니다. 여러가지 인스턴스 종류가 있으니까 AWS에서는 이런 것들을 계속 업로드해서 탑재해서 선택할 수 있는 것이에요. 예를 들어 웹서버를 구축했다고 해봅시다. t2, p3등 다양한 설비/장비를 이용해서 만들었어요. 그런데 사양이 안나오거나 '성능이 좀 안나온다, 컴퓨터가 허덕인다, 메모리가 높은 걸 써야겠다'고 하면 이 인스턴스를 언제든지 중단할 수 있습니다. 더 높은 사양의 인스턴스로 변경하고 새로 시작하면 돼요. 스위치만 켜서 중단하고 변경하고 시작할 수 있게 되는 것이니까요.


멘토링 끝나고 클라우드가 뭐냐, 장점이 뭐냐 찾아보고 읽어보면 좋겠습니다. 클라우드만 썼을 때 단점도 있습니다. 한계에 대해서는 말을 하지 않겠지만, 직접 찾아보면 좋겠네요! (직접 찾아본 정보는 박스 안에 넣어뒀어요)

인터넷 전송 용량에 따른 초과 비용의 위험: 클라우드에 많은 용량을 저장하고 다시 읽어 들이려면 엄청난 네트워크 대역폭이 필요합니다. 소니 픽처스 이미지 수석 엔지니어인 닉 발리는 비용이 많이 들어서 스토리지를 직접 구매하는 것이 낫다고 밝혔어요.

어플리케이션 퍼포먼스 문제: 네트워크 지연을 고려하지 않는다면 퍼블릭 클라우드는 개선된 어플리케이션의 퍼포먼스를 보여주지 못할 수도 있다고 봅니다.

클라우드에 적합하지 않은 데이터 존재 가능: 퍼블릭 클라우드에서는 민감한 정보를 포함하는 어플리케이션을 이용하지 않는 것이 좋습니다. 가지고 있는 데이터의 성격, 공개가능여부 등을 고려해봐야하죠.

회사 규모에 따라 제한: 회사가 클수록 IT자원이 커지고 아웃소싱으로 인한 재정적 이익을 얻기가 어려워집니다. 거대기업이라면 외부 클라우드가 아니라 고유 클라우드를 이용할 때 오히려 경제적으로 이득일 수 있죠.

인적 자원의 부재: 차세대 IT 모델에는 모험심과 기민성이 요구되기 때문에 새로운 것을 익히려는 인적자원이 없다면 활용하기가 어려울 수도 있습니다.

_출처: ITWORLD 뉴스

 

그리고 AWS 관리 콘솔을 봅시다! API에 대한 호출을 직접 날리기도 하고 검정색 화면을 켤 수도 있지만 인스턴스 시작을 눌러서 언제든 쓸 수 있습니다. 인스턴스 상태가 중지된 것을 t2.micro로 구현해놨죠. 이것은 vcpu2타입인데 만약 이것이 안된다면 인스턴스 유형에 들어가서 바로바로 변경을 할 수 있어서 서버사이징을 하는 것이 굉장히 용이하고 쉽다고 할 수 있습니다. 어떻게 생겼는지 궁금하다면 옆의 그림을 참고해보세요! EC2라고 적혀있는 파란색 글자가 보이시죠? 저렇게 클릭만으로도 간단하게 이용이 가능하답니다. 

 


AWS 네트워크를 알아볼까요?

 

네트워크에 대한 기본개념을 잡고 가봅시다. 클라우드 환경 위에서 ec2나 s3등의 리소스를 내 계정 위에 위치시키는 겁니다. 나만의 네트워크를 만드는 것인데 가상 세계에서 내 땅과 같아요. 모두가 쓰는 환경인데 내 계정에서 쓸, 내 땅을 정해야 하는 게 바로 네트워킹입니다. 네트워킹을 클라우드에서 구현한 것이 바로 Virtual Private Cloud(VPC)입니다. 어떤 부분은 삼성이, 어떤 부분은 개인A가 쓸 수도 있어요. VPC는 가상 네트워크라고 생각하면 됩니다. 내 집에서 쓸 나의 주소의 범위를 사이드 블록으로 표현할 수도 있어요. 가상의 공간에서 내 땅을 만들었다면 내가 띄운 ec2 서버를 웹 호스팅할 수도 있고 어떤 서버는 데이터베이스를 호스팅할 수도 있죠. 혹은 파이썬을 이용해서 회귀분석을 할 수도 있구요. 이런 것들이 내 땅 위에서 돌아가게 되는 것입니다. VPC를 만들면 내,외부적으로 통신이 안돼요. 외부 인터넷과 통신이 되기 위해서는 출입문이 필요한 데 이것이 internet gateway(IG)입니다. 그래야 트래픽이 나가고 들어올 수 있는 것이죠. 내 땅에서 엑세스가 가능해야 하니까 출입문을 만들어줘야 하고 라우팅 테이블을 만들어야 합니다. 내 땅, 내 집에서 안방, 주방, 화장실처럼 이미 알고 있지만 들어온 사람들은 모르겠죠, 그래서 라우팅 테이블은 이들이 어디로 가야하는지 목적지와 대상을 경로지정해주는 것과 같습니다.

 

또 역할이 다르니까 망분리를 해주는데, AWS에서는 subnet이라는 것으로 구현해냈습니다. 하는 역할이 다르니까요. 여기엔 public subnet이 있고 private subnet이 있습니다. 전자는 인터넷 게이트웨이와 직접적으로 교류할 수 있는 것이에요. 앞단에서 인터넷과 직접 엑세스하는 자원들이 위치해있어요. 후자는 뒷단에서 직접적으로 인터넷과 엑세스하지 않고 역할을 수행해요. 인터넷과 최대한 접점을 줄이고 싶다고 하면 private subnet에 위치시킬 수 있죠. 그렇다면 DB서버를 만져본 적 있었던 기억이 떠오르며 질문이 떠오를 거에요.

DB패치 업데이트같은 것들도 계속 하는데, 업데이트를 하려면 인터넷과 통신이 되어야 하지 않나?

그런데 private subnet이라면 직접적으로 인터넷과 직접적으로 소통할 수 없으니 NAT라는 것을 이용합니다. NAT가 public subnet으로 들어가서 private subnet은 간접적으로 통신이 되는 것이죠. 다시 한번 정리해봅시다. VPC는 내 땅을 만드는 것이고 기본적으로 격리된 환경이다. 인터넷으로 통신하려면 인터넷 게이트웨이와 라우팅 경로가 지정되어야 합니다. 여러가지 기능을 망분리하는 것이 subnet이고 이것은 public과 private으로 나뉩니다. 인터넷과 직접적인 교류를 하는 전자, 하지 않는 후자로 나뉠 수 있죠. private도 종종 인터넷과 교류해야 하는데 이 때 쓰이는 것이 NAT이고 NAT는 public subnet에 위치해서 private subnet이 점핑해서 간접적으로 교류가 됩니다. 


Q&A 네트워크와 네트워킹

네트워크는 구조이자 틀이고, 조립하고 연결하는 과정 전반은 네트워킹이라고 합니다.


다음시간에는 이런 멘토링을 진행해요!

1) 다음 세션 전까지 각각 1:1로 만나서 친해져봅시다! 시간을 잡아보세요!!

2) 각자 15분씩 세션 진행을 준비해주세요. (일상, 책 리뷰 뭐든 좋습니다)

3) 5년, 10년짜리 커리어플랜을 짜보고 10분정도 이런 생각들을 2주 후에 나눠봅시다!