본문 바로가기

Cloud Service 비교

#4 Network Part_1 Overview

도입

안녕하세요. 빅두 입니다.

6월엔 블로깅이 건도 없다는 것에 충격을 받아 7월엔 많은 내용을 공유해 보고자 다짐을 봤습니다.

오늘 비교해볼 항목은 Network 대한 부분입니다.

다들 생각보다 만만치 많은 Network 보고 많이들 당황하셨을 같은데요. 그래도 Network 엔지니어가 없이 구성할 있는 환경이라는 것에 감사할 따름입니다. (아키텍쳐 설계시엔 네트워크 엔지니어가 필요합니다.)

 

사실 네트워크의 내용이 매우 장황하기 때문에 언급하기를 꺼려했었습니다만, 나름대로 열심히 풀어보도록 하겠습니다.

이번 Network 대해서는 4개의 주제로 나누어서 이야기 보겠습니다.

 

#4 Network Part_1 Overview

#5 Network Part_2 Traffic Flow&Security

#6 Network Part_3 VPN&Peering

#7 Network Part_4 Tag&Cost&Trubleshooting

 

 

Azure

오늘은 Azure부터 이야기 보도록 하겠습니다.

Azure에서의 Network 이야기 하려면 가장 먼저 확인하는 것이 바로 Virtual Network입니다.

그대로 직역하면 가상 네트워크 인데요. 당연한 아니냐? 라고 말씀하시는 분들이 계실 것입니다만, Azure 서비스 이름 자체가 Virtual Network(VNet)으로 되어 있습니다.

 

다음 그림은 Azure 설명서에서 제공하는 Azure Network 기본적인 그림 입니다.

 

 

그림을 보시면 아시겠지만, Azure Infra 안에 Virtual Network라는 하나의 Network 생성한 안에서 정책과 연결을 구현하는 모습을 보실 있습니다.

Azure 공부하면서 가장 놀라운 사실은 바로 Resource Object화로 종속성을 최대한 배제한 아키텍처라는 것입니다.

종속관계가 없이 무언가를 제작할 수는 없습니다만, 최대한 종속성을 피해 제작한 것이 가장 메리트라고 생각합니다.

 

가장 처음으로 VNet 속성들을 살펴 보도록 하겠습니다.

 

 

여러가지 내용이 있습니다만, 저에게 가장 처음 눈에 것은 바로 Address space 입니다. 기본적으로 Network 만들었다면 가장 먼저 확인할 내용은 CIDR값이라고 생각합니다. 화면에서 보시는 바와 같이 Subnet 별도로 존재하는 것으로 보아 Compute Resource 연관된 Resource들은 Subnet Mapping 것이라는 것은 추측할 있습니다.

그렇다면 Address space 무엇인가? 여기저기 찾아봤습니다만, 개인적으로 정의를 내리자면 하나의 VNet에서 할당 가능한 IP 범위 라고 생각합니다.

 

여기서 주목해야 부분은 바로 Address space 수정이 가능하다는 입니다. 말은 최초 VNet 제작시에 지정한 CIDR값에 변경이 필요하다면, 언제든 변경이 가능하다는 것을 의미합니다. 물론 CIDR값을 변경하는 것에는 매우 문제가 발생할 있습니다.(VPN 연결한 경우 Secure Channel 끊길 있습니다.)

기본적으로 최초 네트워크 디자인을 했을 보다 네트워크(CIDR) 필요하게 됐을 , AWS 경우 새로운 VPC(VNet 같은 개념) 만들어 Blue-Green 방식으로 Service Migration 하는 방법을 고려합니다. 왜냐하면 한번 정의한 Address space(CIDR)값을 수정할 없기 때문입니다.

Azure같은 경우 VNet에서는 서비스 마이그레이션을 전혀 고려할 없이 Address space(CIDR) 수정하면 됩니다. (다른 Cloud 모르겠네요.)

VNet IP Address Range 추가할 수도 있습니다만, 개인적으로는 하나의 VNet에는 하나의 Range(CIDR) 설정하는 것이 좋다고 생각합니다. 어짜피 논리적으로 구성된 VNet이라면 굳이 여러 개의 Range 하나의 VNet 할당할 필요는 없으며, VPN Source CIDR값이 필요한 무언가를 사용할 때를 대비하는 것이 좋다고 생각합니다.

 


  

참고로 CIDR /15 초과한 (/0~/14) 입력하면 에러가 나더라고요. /15 무슨 말인지 모르시는 분들은 후니의 Cisco 네트워킹 책을 읽으시길 바랍니다 :) (netmask 나타내는 표기법 입니다.)

 

이쯤에서 Powershell 명령을 사용하여 VNet 확인해 보겠습니다.

 

PS> Get-AzureRmVirtualNetwork

 

 

출력된 AddressSpace 항목을 보시면 JSON형태의 배열이 출력되는 것을 보실 있습니다. 내용만 봐도 AddressSpace에는 여러 개의 Range 할당할 있는 것을 있네요.

 

다음으로 확인할 것은 Subnet입니다.

 

<저도 가로로 모니터가 필요한 같아요… 듀얼 스크린이라 가능했던 스크린 >

 

Subnet Private Network IP 필요한 모든 Resource들에게 IP 할당할 있는 IP_Prefix 구현합니다. 간단하게 Virtual Machine(VM) Network Interface Private IP 할당 받으려면 Subnet 필요하다고 말할 있겠습니다.

Subnet VNet 종속되며, VNet 달리 Address range 수정할 없습니다.

VNet Address range 내에서 Subnet 계속해서 생성할 있으며, VNet Address range 범위에 벗어난 Subnet 제작하려고 시도하면 생성이 되지 않고 경고가 발생합니다.

위의 cmdlet 결과를 보시면 Subnets 내용에 배열로 출력되는 것을 보면, 마찬가지로 여러 개의 Subnet 제작할 있다는 것으로 확인하실 있습니다.

Cmdlet에서 아래 명령어를 확인해 보니 VNet Subnet 종속성을 확인할 있었습니다.

 

PS> Get-Help Get-AzureRmVirtualNetworkSubnetConfig

 

 

보시는 바와 같이 명령어의 필수 매개변수로 VNet 입력하도록 되어있습니다.

 

Subnets 메뉴에 보면 Gateway subnet 이라는 항목이 있습니다만, 내용은 #6 Network Part_3 VPN&Peering

에서 이야기 하도록 하겠습니다.

 

다음으로 눈에 띄는 것은 DNS servers 라는 메뉴입니다.

기본 설정은 아래 화면을 보시는 바와 같이 Azure DNS 사용하도록 되어있습니다.

 

 

녀석은 뭘까? 하고 생각하다가 해당 VNet으로 배포된 컴퓨터들은 DHCP 사용한다는 것이 떠올랐습니다. 기본적으로 VM 실행될 Network 연결되어야 하기 때문에 DHCP Server에서 IP 받아옵니다. 때에 DNS정보를 받아올 있는 옵션으로 사용 되는 것을 추측할 있습니다.

 

여기까지 추측이니까 진짜 그렇게 되는지 확인해 보도록 하겠습니다.

 

Custom DNS 선택 Google DNS 8.8.8.8 입력하였습니다. 그리고 상단의 Save 누르니 VNet 정보에 DNS Servers Azure Provided DNS service에서 8.8.8.8 변경된 것을 보실 있습니다.

 

 

그런 다음 VM 접속하여 DNS 정보를 확인해 보았습니다. 좌측은 수정 , 우측은 수정 ipconfig /all 결과값 입니다.

 

 

Azure Console에서 수정한 DNS값이 반영되는 순간을 찾기 위해 이것 저것 확인해 보니 VNet에서 DNS 가져오는 순간은 NIC DHCP에서 IP 받아올 입니다. 제가 테스트한 바로는 DNS server 수정 제작, 재부팅, 종료/시작 3가지 경우에서 DNS값이 변경되는 것을 확인하였습니다.

 

VNet 메뉴에서 하단을 보면 devices라는 메뉴도 눈에 들어옵니다.

메뉴는 현재 VNet 연결되어 있는 모든 Resource 할당된 IP Address 있다는 점이 매력적입니다. 다른 Cloud에서도 이런 기능이 있었다면, 관리자가 broadcast 이용해서 사용중인 IP 찾는다는 생각은 같습니다.

 

 

속성 부분도 빠뜨릴 없을 같습니다. 뭐니뭐니해도 객체를 속성 메뉴를 알아야 한다고 생각합니다. :)

 

 

생각보다 속성 메뉴에는 별게 없네요…?? 라고 생각했는데 눈에 띄는 레이블이 보입니다.

Change subscription이라고 되어있군요. 한번 눌러봅시다.

 

 

아니!? Resource to move라니!? Network 이동할 있단 말인가? 아니 하위 리소스들 마저 다른 지역으로 이동이 가능하다는 것인가!? 이것은 정말 해봐야 같습니다. 그래서 제가 한번 해보겠습니다.

현재 일본 동부에 있으니 서부로 이동을 한번 보죠.

 

 

이동하려고 하니 뭔가 문구가 있네요. 자원이 이동하게 되면 Resource IDs 바뀐다는군요. 저는 ~ 상관이 없으니 쿨하게 이동해 보겠습니다.

 

 

시작해 보았습니다 :)

Validating 끝나고 Success 떨어지면 이동이 시작됩니다.

 

 

Dashboard에서 기존의 Resource들이 삭제된 것을 있습니다.

 

 

이동이 완료되었습니다.

Resource들을 한번 볼까요?


 

Resource Group 이동한 모습을 보실 있습니다.

여기서 한가지 중요한 것은 Location 이동하지 않았다는 것입니다. , 같은 지역에서 Resource Group 이동을 그림이며, 다른 지역으로 이동을 하지 못한다는 이야기가 됩니다. 이것을 다르게 말하면 제작된 Resource Region 종속된다고 있겠네요.

 

소개 드린 내용 이외에도 여러가지 기능들이 있습니다만, AWS 비교했을 Overview에서는 정도 차이점이 존재하는 같습니다.

 

 

AWS

이번엔 AWS 네트워크에 대해 살펴보도록 하겠습니다.

 


AWS Azure 마찬가지로 Virtual Private Cloud(VPC)라는 커다란 Virtual Network 안에서 Compute Resource 할당되는 그림 입니다.

 

지난번 #1 고 가용성의 기준 Region에서 언급했었습니다만, AWS 하나의 Region에서 2 이상의 Availability Zone(AZ) 존재한다고 말씀 드렸었습니다. 개념을 이해하셔야 VPC Subnet 설명할 있기 때문에, 해당 내용이 이해가 되신다면, #1 고 가용성의 기준 Region 또는 http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-regions-availability-zones.html 참고하시기 바랍니다.

 

다시 본론으로 돌아와서 AWS Network VPC라는 커다란 Virtual Network 시작합니다. VPC Region 종속된 Resource 이며, VPC 하나의 사설 네트워크를 만든다고 생각하시면 쉽게 이해하실 있습니다.

 

 

AWS Console에서의 VPC 화면을 보면 Network 대한 모든 설정이 모여있다는 느낌이 드실 겁니다. 근데, 그게 사실입니다. AWS Azure 달리 Resource 기반의 메뉴가 아닌 Service 기반의 메뉴가 보여집니다. , AWS에서 Network 대한 설정은 VPC 메뉴에서 전부 가능합니다. EC2 메뉴에도 있는 기능들이 몇몇 있습니다만, 어찌됐든 AWS Service 기준으로 UI 개발되었다는 점을 기억해 주시면 되겠습니다.

 

VPC 심플합니다. VPC ID AWS에서 할당해 주며, Name Tag 달아줌으로써 Name 속성 값이 들어갑니다. 여기서 중요한 점은 VPC 만들 지정한 CIDR값은 Azure 다르게 수정이 불가능합니다. 어디에서도 수정할 있는 메뉴를 찾아보실 없으며, 물론 CLI에서도 찾으실 없습니다.

 

 

Azure에서 VNet Address space 이야기할 언급 했었습니다만, AWS 경우 최초 디자인한 VPC 증설이 필요할 때에는 가지 시나리오를 생각할 있습니다.

첫째로 VPC 존재하는 모든 리소스를 다른 VPC 마이그레이션 하는 것입니다. CIDR값이 수정되지 않기 때문에 증설하려면 어쩔 없는 선택지 입니다.

둘째로 별도의 VPC 제작해 VPC 연결을 하여 하나의 Network처럼 만들어 줍니다. 방법은 그리 추천하지 않습니다. 설정은 쉽기 때문에 서비스에 영향은 전혀 없습니다만, VPC Peering Traffic Forwarding 되지 않기 때문입니다. 자세한 내용은 #5 Network Part_2 Traffic Flow&Security 다루도록 하겠습니다.

 

 

AWS Console에서 VPC 만들어 보시면 아시겠지만, AWS Console 자체에서는 하나의 Region에서만 모든 서비스 조작이 가능하게 설계되어 있고, VPC 제작할 때도 Region 선택하지 않습니다. 얘기는 AWS Console 자체에서 Region 선택했다는 의미가 되며 이를 AWS에서는 Default Region 지정했다고 합니다.

 

내용을 종합해 본다면, 앞서 언급드린 대로 VPC Region 종속되는 Resource라고 있겠습니다.

 

Tenancy 옵션은 대부분의 사용자들이 Default 사용을 하셔야 합니다. 해당 옵션은 Dedicated Host 할당 받으신 고객분들 께서 특정 Host EC2 Instance(VM) 생성하기 위해 제공되는 옵션이기 때문입니다. 적어도 저는 일이 없겠네요.

 

여러가지 설정들을 보시면 Network ACL이라는 것도 확인하실 있으시며, Route table옵션도 보이실 건데요. 부분들 역시 #5 Network Part_2 Traffic Flow&Security 다루도록 하겠습니다.

 

이쯤에서 Powershell 통한 VPC정보를 확인해 보도록 하겠습니다.

 

PS> Get-EC2Vpc

 


 

보시는 바와 같이 VPC에는 매우 심플한 데이터들만 설정이 되어 있습니다.

 

흥미로운 메뉴가 있는데요. 바로 DHCP options set이라는 부분과 DNS resolution, DNS hostnames 라는 옵션입니다. 부분들에 DNS 설정에 대한 부분이 존재합니다.

 

먼저 DHCP Option Sets 메뉴로 이동해 보겠습니다.

 

 

DHCP option 엄청 간단합니다. Azure에서 설명 드렸던 DNS 설정에 대한 부분을 설정하는 단계라고 생각하시면 되겠습니다. 하지만, DHCP option set 제작해 보면 조금 다른 내용이 보입니다.

 

 

바로 NetBIOS name servers node type이라는 옵션입니다. 솔직히 옵션을 쓰시는 분이 계실까? 라는 생각도 들긴 합니다만, 저런 옵션이 있다는 것만 아시면 같습니다. 재밌는 부분은 NTP Servers 설정할 있다는 입니다.

 

해당 DHCP option set 적용 받으시려면 Azure때와 같이 Compute Resource DHCP에서 설정 값을 받아올 적용 됩니다. 솔직히 내용은 VM OS에서 담당하는 영역이어서 어떠한 Cloud Service라도 동일할 것이라 생각합니다.

 

DNS resolution DNS hostnames EC2 Instance Public DNS 보이게 하려면 해당 설정들이 Yes 설정되어 있어야 합니다.

 

VPC 생성했으니 이번엔 Subnet으로 넘어가 보도록 하겠습니다.

 

 

Subnet 제작할 가지를 고려하여 설계해야 합니다.

첫째로 CIDR 고려해야 합니다. 이건 Azure 마찬가지 인데요. 한번 지정한 CIDR값은 수정할 없습니다.

둘째로 Availability Zone(AZ) 고려해야 합니다. Subnet AZ 종속되는 Resource이기 때문에, 한번 AZ 지정하게 되면 수정할 없습니다. AWS에서 AZ 지정한다는 것은 HA 구성하기 위한 최소 단위라고 생각하시면 쉽습니다.

 

Subnet 생성 화면을 보시면 이해가 쉬우실 것입니다.

 

 

Subnet 생성 AZ옵션을 Default No Preference 설정하시면 랜덤하게 AZ 지정하여 출력해 줍니다. 이때 랜덤은 진짜 랜덤입니다. Round Robin 형식이 아니라는 의미 입니다.

 

 

AWS에서는 Subnet 별로 Network ACL Route Table 설정할 있습니다. 생성시 기본값으로 설정되며, 값들은 VPC라는 이름에 걸맞게 Private 접근만 가능하도록 설계되어있습니다. 자세한 내용은 역시나 #5 Network Part_2 Traffic Flow&Security 다루도록 하겠습니다. AWS에서는 Route Table Network ACL 중요시 여기기 때문에 계속해서 같은 말이 반복됩니다만, 컨셉이 다른 서비스를 비교하다 보니 이런 상황이 발생하는 같습니다.

 

AWS Subnet 역시 VPC CIDR 내에서 쪼개어 사용할 있으며, Azure 다르게 현재 사용하고 있는 IP 리스트는 확인이 어렵습니다. 다만, 해당 Subnet에서 사용 가능한 IP 개수는 Available IPs라는 속성으로 보여줍니다.

 

AWS Public IP 동적으로 할당을 EC2 Instance(VM) 만드는 과정에서 지정하도록 되어있습니다. 설정은 제작 후에 수정을 없으며, 동적 Public IP 할당할 있는 유일한 방법입니다. 그러나, 사용자가 EC2 Instance(VM) 만들 마다 해당 옵션을 설정해야 하기 때문에 실수가 많이 일어났던 같습니다. 그래서 AWS에서는 Subnet 옵션을 주어 자동을 동작 Public IP 설정하도록 하는 Subnet 제공합니다. 옵션은 Auto-assign Public IP입니다. 기본값은 no 설정되어 있습니다.

 

Subnet Powershell 확인해 보면 다음과 같습니다.

 

PS> Get-EC2Subnet

 

 

위의 Subnet 속성값과 별반 다를 것이 없기 때문에 설명은 넘어가도록 하겠습니다.

 

 

맺음말

여기까지 우선해서 Network 비교해 보았습니다.

개인적인 생각으로는 Azure Enterprise Network 설정을 하기에는 좋다고 생각합니다. 아무래도 AWS Network 한번 구성하면 변경이 어렵다는 점과 함께 Resource Region에서 하나씩 확인해야 한다는 점이 아쉬운 부분이라 생각합니다.

하지만, 서비스 입장에서 조작을 있게 만든 AWS 경우에는 접근성에서는 Azure보다 좋다고 생각합니다. Network 모든 설정이 눈에 들어오기 때문에 개인적으로는 사용자가 실수할 일도 적다고 생각 합니다.

 

글을 쓰는데 3일이라는 시간이 소요됐습니다만, 다음 주제도 중요한 내용이기에 최대한 시간을 내서 써보도록 하겠습니다. 다음엔 #5 Network Part_2 Traffic Flow&Security 라는 제목으로 블로깅 하도록 하겠습니다.

 

감사합니다.

 

#4 Network Part_1 Overview

#5 Network Part_2 Traffic Flow&Security

#6 Network Part_3 VPN&Peering

#7 Network Part_4 Tag&Cost&Trubleshooting


 

참고자료 :

https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-overview/

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html/