글을 쓰다보니, 왜 그 자리에서 익히고 가라는지 이해가 갑니다.
이 자리에서 이해하고 가시기 바랍니다.
집에 가니, 다시 하나씩 실험해보는 것이 쉽지 않았습니다. 사람은, 그런 것이네요. 마치 복습을 싫어하는 아이처럼, 하나씩 다시 해보고 있습니다.
https://brunch.co.kr/@topasvga/3806
네이버클라우드 역삼 교육장 건물에서 진행된 카페 정기 모임 겸, 클라우드 스터디를 진행했습니다. 많은 분들이 와주셨고, 네트워크 전문가 답게 본인 소개와 간단한 이론(2시간), 실습(2시간+)로 깔끔하게 마무리해주신 기억이 나네요. 먼저 가볍게 실습 방법에 관해 소개해주시고, 네트워크 이론을 설명해주셨습니다. 마침, 네이버클라우드와 AWS 네트워크 비교를 해주셔서 좀 더 와닿았습니다. 멀티 클라우드를 고려한다면 함께 비교해보며 공부하는 것도 괜찮을 것 같아 보이네요.
이론: 네트워크를 왜 배우죠?
개발자는 네트워크를 다룰 일이 없다고 하죠. 과거에는 네트워크 엔지니어가 상주하고 그들이 늘 해왔던 일입니다. 구축이 끝나면 장비는 세팅되어 있고 개발을 해서 그냥 올리면 그만입니다. 근데 네트워크는 문제가 생기지 않으면, 어떤 흔적도 보이지 않아요. 백엔드 개발과 비슷하지만 약간 다른 애매함이 있습니다. 물론 서버에 안 올라가면 웹에서는 띄울 수가 없는 것입니다. 서버가 잘 작동하고 네트워크가 잘 작동하면 의도한 화면이 나오면, 그저 연결이 잘 되었다고 당연하게 넘기기 마련입닌다. 그래서 보통은 종사자가 아니면 그 중요성을 잘 모르는 것입니다.
1. 네트워크는 기본이다.
네트워크 구축은 과거에는 처음부터 많이 진행했습니다. 온프레미스 회사라면 처음부터 네트워크를 구축합니다. 그런데 클라우드는, 이미 다 구축되어 있고 그 상태에서 필요한 서버를 만들고 보안을 위한 방화벽만 설치하면 됩니다. 이제는 이러한 네트워크가 기본이 되고 있습니다. 그 이상의 보안 설정을 혼자 할 수 있어야 합니다. 회사 규모에 따라 다르겠지만, 이제는 네트워크를 구성해서 개발과 운영을 모두 하는 사람이 필요한 기업도 생길 수 있습니다. 이미 있을지도 모르겠네요.
법적인 요건도 있습니다. 규모가 어느 정도 되는 기업은 ISMS-P, 금융권은 전자 금융 거래법 망분리 등의 법적 요구 사항이 있습니다. 이를 맞추기 위해서는 네트워크의 '보안' 요건은 필수적입니다.
- 네이버클라우드 ISMS : https://brunch.co.kr/@topasvga/1954
- AWS ISMS : https://brunch.co.kr/@topasvga/1771
개발자가 네트워크 어렵다는 말을 합니다. 평소 자주 쓰지 않으면 뭐든 쉽지 않을 것 같습니다. 꾸준히 써와야 뭐든 익숙하게 잘 해낼 수 있는 것입니다. 그 설계도 중요한데, 본인이 직접 해봐야 안다고 합니다.
코드로 관리하는 트렌드도 새롭네요. 네트워크도 AWS는 CDK, Cloudformation, terraform 도구를 사용해서 코드로 인프라를 관리할 수 있습니다. 이를 IaC(Infrastructure as a Code)라고 합니다. 그 중에서 테라폼(terraform)을 많이 쓰는 이유는, 모든 CSP에서 호환해서 코드로 관리할 수 있기 때문입니다. 멀티 클라우드가 되는 것입니다.
네이버클라우드 네트워크를 살펴보겠습니다. VPC, LB, Global DNS부터 IPSec VPN, GTM, Cloud Connect 등 다양한 상품이 있습니다. 컨테이너로 NKS, Container Registry가 있네요. 최근에는 이렇게 쿠버네티스 서비스도 함께 다루는 경우가 많아서 이번 기회에 잘 체험해보고 가려고 합니다.
2. 네트워크는 설계가 중요하다.
네트워크 대역 간 통신 https://brunch.co.kr/@topasvga/3807
사설 IP 대역, 대역 간 통신을 고려한 네트워크 설계, 서브네팅, 클라우드 네트워크 구축을 반복한다면, 잘 활용할 수 있습니다. 여기서 제일 어려운 것은 서브네팅입니다.
- 사설 IP 대역: IANA에서 정해줍니다. 10점대, 172점대, 192점대로 나누어집니다. 국가 기관이 받아오고 각 ISP에 할당합니다.
- 대역간 통신: 다른 블록으로 설정해야 통신이 됩니다. 가령 10.0.0.0/24 대역을 가지고 통신한다면, 사무실이 10.0.0.1, 데이터센터 서버가 10.0.0.2으로 유선 연결시, IP 블록이 동일하며 네트워크가 중복됩니다. 즉, 서로 통신이 안됩니다. 이럴 때는 다른 블록으로 연결해줘야 합니다. 이 때, "크게 범위를 잡는다"고 원칙을 세웁니다. 예를 들면, 10.0.0.0/24 (사무실) - 10.20.0.0/24(web server) - 10.10.0.0/24(데이터센터)로 잡을 수 있습니다.
- 서브네팅: 먼저 네이버클라우드 VPC는 리전당 최대 3개를 생성할 수 있습니다. IP 주소 범위는 사설 IP 대역 모두 사용할 수 있습니다.(10, 172, 192) 다만, 할당을 할 때에는 /16 이상으로만 설정할 수 있습니다. IPv4 CIDR블록은 /16부터 /28사이로 설정합니다. 가장 최적의 CIDR블록은 계정별로 /20으로 한다고 가정하여 사용합니다. 만약 /16으로 하면, 다른 서비스는 할당받을 수 없으니 이렇게 여유를 준다고 합니다.
- 클라우드 네트워크 구축: 네트워크를 만들어야 서버를 사용할 수 있습니다. 계정별로 /20 블록으로 설정하고, 서브넷을 만들 때, 10.0.0.0/20으로 하면 다른 서브넷은 만들 수 없습니다. 더 쪼개서 /24로 해보겠습니다. 10.0.0.0/20은 C 클래스 16개 입니다. 즉, 10.0.0.0/24 ~ 10.0.15.0/24까지 할당할 수 있습니다. 그런데 이러한 사설 IP로 만든 subnet을 외부와 연동하려면 NAT Gateway를 사용할 수 있습니다. 이를 Public subnet에 넣어 공인 IP도 부여해줍니다.
- 기타: Load Balancer는 ALB, NLB 등이 있습니다. NLB는 L4로 빠르고, ALB는 L7으로 거쳐야할 것이 많으니 조금 느립니다. 둘다 공인 IP를 제공합니다. AWS의 경우, ALB는 유동 IP인 것으로 나타납니다. 네이버는 둘다 고정 IP를 제공하고 있습니다. 추가로, AWS는 ALB, NLB 모두 보안 그룹을 제공한다고 하네요. 네이버클라우드의 ALB, NLB는 별도 보안 그룹은 없습니다.
- Object Storage는 인터넷 연결을 지원합니다. 외부에서 직접 접속할 수 있습니다. NAS는 그렇지 않습니다.
- DNS 서비스를 살펴보겠습니다. 네이버클라우드는 Global DNS라는 서비스로 제공합니다. 도메인을 구입하고, Global DNS에 등록하여 사용할 수 있습니다. 레코더를 추가하고 공인 IP와 연결해서 쉽게 사용할 수 있습니다. 사전에 네임서버 설정을 해줘야합니다. https://brunch.co.kr/@topasvga/3725
- GTM은 Global Traffic Manager로 DNS 기반 네트워크 트래픽을 다수의 서버로 분산해주는 도구입니다.
- NKS: 네이버클라우드의 쿠버네티스 서비스입니다. 생성하는데 35분이 걸리니, 미리 시간을 잘 배분해두는 게 좋겠습니다.
실습: 쿠버네티스로 게임 배포하기
- 서버이미지로 여러 개 서버를 만들 수 있습니다.
- 계정은 동일하지만, 비밀번호는 직접 찾아서 넣어야 합니다.
- 접속하려면, 로드밸런서를 만들어서 매칭해줘야해요.
- Private subnet의 서버에 연결하는 방법
- client vpn / ipsec vpn / 전용선 연결 (모든 CSP 적용)
- Public으로 들어갈 수 있고, 이 서버로 private 서버 접속
- vpc 같은 거 안에서는 서버 간 통신이 되어요.
- 이 때 public 서버를 bastion host, jump host라고도 해요. 베스천이라고 합니다.
- Ncloud는 계정 암호방식이에요. pem키 없이도 잘 되어요. aws는 pem키 필요해서 다른 방식으로 들어가요.
- 서버 이미지로 생성해도 보안 계정 암호는 복사는 안되어요. 새롭게 찾아서 넣어야 합니다.
- 이번 실습은 NKS로 게임을 배포해보는 것입니다. 자세한 과정은 다음 사이트를 참고했습니다.
https://brunch.co.kr/@topasvga/3818
완성된 화면
쿠버네티스로 배포하면 아래와 같이 화면이 나타납니다. 여기서 External-IP에 있는 default로 시작하는 주소를 복사해서 웹 브라우저 창에 넣습니다.
이 게임을 NKS로 배포할 수 있습니다. 저 주소는 로드밸런서 공인 주소값입니다. 바로 나타나는 것을 알 수 있습니다.
소감: 짧고 굵은 네트워크 특강
짧다는 것은 그만큼 재미있지만 상대적으로 시간이 부족하다는 점입니다. 이론은 다시 보면서 소화할 수 있어 좋았고, 친절하게 중간 질문에 답해주신 것도 좋았습니다. 다만, 실습 시간이 모자랐습니다. NKS 생성 시간만 35분이 걸리고, 그 외에 배포 시간 등을 생각하면 실습 시간을 넉넉하게 잡거나 해야겠습니다. 테라폼으로는 진행을 못해서 더욱 아쉽긴 합니다. 차라리 두 개의 날로 쪼개어 진행해보는 것도 좋았겠다고 혼자 생각을 했습니다. 테라폼은 진행하려고 보니, 코드를 직접 따라 작성하는 데 한계가 있었고, 브런치는 복사가 안 됩니다. 그래서 중간에 텍스트 파일이 올라오면 다운로드하고, 다시 복사를 하면서 진행했습니다. 그 때문에 시간이 조금 더 소요된 게 아닌가 생각했습니다.
다음 과정은 조금 쪼개어 쿠버네티스 1차, 테라폼 2차로 나누어 진행하면 더욱 효과적일 것 같습니다. 특히, IaC 도구인 테라폼은 코드를 길게 작성해야 하므로, 어느 정도 코드 복사가 허용될 수 있게 올려주신다면 짧은 시간 내에 더 빠르게 익혀볼 수 있을 것으로 기대합니다. 네이버클라우드와 AWS를 함께 비교해주셔서 더 잘 이해할 수 있었습니다. 좋은 특강 마련해주셔서 감사합니다.
'세미나 후기' 카테고리의 다른 글
[Ncloud] GSLB로 DNS 이중화 스터디 후기 (1) | 2024.08.18 |
---|---|
[가짜연구소] <초조한 전망대> 나만의 AI 뉴스레터 설명해보기 연습 (0) | 2024.07.28 |
[가짜연구소] <초조한 전망대> 두번째 후기: 내 AI 유형 탐색하기 (0) | 2024.07.07 |
[NCMD] Naver Cloud Master Day 후기: 마스터의 이야기 (1) | 2024.07.06 |
[가짜연구소] <초조한 전망대> 첫 모임 후기 (2) | 2024.07.01 |