작년과 올해는 계속 클라오드, AI쪽을 준비하면서 공부를 하고 있습니다.
정리된 문서들이 너무 좋아서 책을 보는 것보다 아래의 가이드를 따라가면 무료 문서, 실습, 동영상이 너무 잘 준비되어 있습니다.
시간을 들여서 한번 도전해 보시길 권합니다. ^^
https://docs.microsoft.com/ko-kr/learn/modules/intro-to-azure-networking/2-deploy-to-azure
분산 환경에서 늘 나오는 루즐리 커플드에 대한 내용입니다 ^^
Azure에 사이트 배포
12분
대체로 첫 단계는 클라우드에 온-프레미스 구성을 다시 만드는 것입니다.
이 기본 구성은 네트워크가 어떻게 구성되고, Azure에서 어떻게 네트워크 트래픽이 들어오고 나가는지 알려줍니다.
전자상거래 사이트 개요
대규모 엔터프라이즈 시스템은 종종 상호 연결되어 함께 작동하는 여러 애플리케이션과 서비스로 구성됩니다. 인벤토리를 표시하고 고객의 주문 작성을 허용하는 프런트 엔드 웹 시스템을 사용하는 분들이 있을 것입니다. 이 시스템은 다양한 웹 서비스와 통신하여 인벤토리 데이터를 제공하고, 사용자 프로필을 관리하고, 신용 카드를 처리하고, 처리된 주문의 이행을 요청할 수 있습니다.
소프트웨어 설계자 및 디자이너는 복잡한 시스템을 보다 쉽게 디자인, 빌드, 관리 및 유지 관리할 수 있도록 여러 가지 전략과 패턴을 사용합니다. 그 중 몇 가지를 살펴볼 것이며, 첫 번째는 느슨하게 결합된 아키텍처입니다.
느슨하게 결합된 아키텍처의 이점
N 계층 아키텍처 사용
느슨하게 결합된 시스템을 구축하는 데 사용할 수 있는 아키텍처 패턴은 n 계층입니다.
n 계층 아키텍처는 애플리케이션을 2개 이상의 논리 계층으로 나눕니다. 아키텍처 측면에서 상위 계층은 하위 계층에서 서비스에 액세스할 수 있지만, 하위 계층에서 상위 계층에 액세스해서는 안 됩니다.
계층은 문제를 구분하는 데 도움이 되며, 재사용이 가능하도록 이상적으로 설계되었습니다. 계층화된 아키텍처를 사용하면 유지 관리도 간소화됩니다. 계층을 개별적으로 업데이트하고나 바꿀 수 있으며, 필요할 경우 새로운 계층을 삽입할 수 있습니다.
3계층은 3개의 계층이 있는 N 계층 애플리케이션을 말합니다. 전자상거래 웹 애플리케이션은 이러한 3계층 아키텍처를 따릅니다.
웹 계층은 브라우저를 통해 사용자에게 웹 인터페이스를 제공합니다.
애플리케이션 계층은 비즈니스 논리를 실행합니다.
데이터 계층에는 제품 정보 및 고객 주문을 저장하는 데이터베이스 및 기타 스토리지가 포함됩니다.
다음 일러스트레이션은 사용자에서 데이터 계층으로 이동하는 요청 흐름을 보여줍니다.
각 계층이 전용 가상 머신에 호스트되는 3계층 아키텍처를 보여주는 일러스트레이션.
사용자가 단추를 클릭하여 주문을 접수하면 사용자의 주소 및 결제 정보와 함께 웹 계층으로 요청이 전송됩니다. 웹 계층은 애플리케이션 계층에 이 정보를 전달하고, 애플리케이션 계층은 결제 정보의 유효성을 검사하고 인벤토리를 확인합니다. 그러면 애플리케이션 계층에서 나중에 주문을 처리할 때 선택할 주문을 데이터 계층에 저장할 수 있습니다.
Azure에서 실행 중인 전자상거래 사이트
Azure에서는 코드를 호스팅하는 완전히 미리 구성된 환경부터 사용자가 직접 구성, 사용자 지정, 관리하는 가상 머신에 이르는 다양한 방식으로 웹 애플리케이션을 호스팅할 수 있습니다.
가상 머신에서 전자상거래 사이트를 실행하려는 경우를 가정해 보겠습니다. Azure에서 실행 중인 테스트 환경의 모습은 다음과 같습니다. 다음 일러스트레이션은 인바운드 요청을 제한하도록 보안 기능이 설정된 가상 머신에서 실행되는 3계층 아키텍처를 보여줍니다.
각 계층이 별도의 가상 머신에서 실행되는 3계층 아키텍처를 보여주는 일러스트레이션. 각 가상 머신은 IP 주소가 레이블로 표시되고 해당 가상 네트워크 내부에 있습니다. 각 가상 네트워크에는 열린 포트를 나열하는 네트워크 보안 그룹이 있습니다.
자세히 분석해 보겠습니다.
Azure 지역을 나타내는 지구 상의 고정된 위치
Azure 지역이란?
지역은 특정 지리적 위치 내에 있는 하나 이상의 Azure 데이터 센터입니다. 미국 동부, 미국 서부, 북유럽이 그 예입니다. 이 예에서는 애플리케이션이 미국 동부 지역에서 실행되고 있습니다.
가상 네트워크에서 실행 중인 두 대의 가상 머신
가상 네트워크를 연결합니다.
가상 네트워크란 Azure에서 논리적으로 격리된 네트워크입니다. Hyper-V, VMware 또는 기타 공용 클라우드에서 네트워크를 설정해보신 분들은 Azure 가상 네트워크에 익숙할 것입니다. 가상 네트워크는 Azure 리소스에서 상호 간 통신, 인터넷 통신 및 온-프레미스 네트워크 통신을 안전하게 수행할 수 있게 합니다. 가상 네트워크는 단일 지역으로 범위가 제한되지만 가상 네트워크 피어링을 사용하여 여러 지역의 여러 가상 네트워크를 연결할 수 있습니다.
가상 네트워크는 하나 이상의 서브넷으로 분할될 수 있습니다. 서브넷을 통해 개별 섹션의 리소스를 구성하고 보호할 수 있습니다. 웹, 애플리케이션 및 데이터 계층에는 각각 단일 VM이 있습니다. 3개의 모든 VM은 동일한 가상 네트워크의 별도 서브넷에 위치합니다.
사용자는 웹 계층과 직접 상호 작용하므로 VM에는 개인 IP 주소와 함께 공용 IP 주소가 있습니다. 사용자가 애플리케이션 또는 데이터 계층과 상호 작용하지 않으면 이러한 VM 각각에 개인 IP 주소만 포함됩니다.
또한 서비스 또는 데이터 계층을 온-프레미스 네트워크에 유지하여 웹 계층을 클라우드에 배치하는 동시에 애플리케이션의 다른 측면을 엄격하게 제어할 수 있습니다. VPN 게이트웨이(또는 가상 네트워크 게이트웨이)를 사용하면 이 시나리오를 구현할 수 있습니다. 인터넷을 통해 Azure Virtual Network와 온-프레미스 위치 간의 안전한 연결을 제공할 수 있습니다.
Azure는 물리적 하드웨어를 관리합니다. 사용자는 소프트웨어를 통해 가상 네트워크 및 게이트웨이를 구성하여 가상 네트워크를 자신의 네트워크처럼 취급할 수 있습니다. 공용 인터넷 또는 사설 IP 주소 공간의 네트워크 등 가상 네트워크가 연결할 수 있는 다른 네트워크를 선택할 수도 있습니다.
네트워크 보안 그룹을 공유하는 두 대의 가상 머신
네트워크 보안 그룹이란?
네트워크 보안 그룹, 즉 NSG는 Azure 리소스에 대한 인바운드 네트워크 트래픽을 허용하거나 거부합니다. 네트워크 보안 그룹은 네트워크의 클라우드 수준 방화벽으로 간주하세요.
예를 들어 웹 계층의 VM은 포트 22(SSH) 및 80(HTTP)의 인바운드 트래픽을 허용합니다. 이 VM의 네트워크 보안 그룹은 이 포트를 통해 들어오는 모든 소스의 인바운드 트래픽을 허용합니다. 신뢰할 수 있는 IP 주소 등 알려진 소스에서 들어오는 트래픽만 허용하도록 네트워크 보안 그룹을 구성할 수 있습니다.
참고
포트 22를 사용하면 SSH를 통해 Linux 시스템에 직접 연결할 수 있습니다. 여기에서는 설명을 위해 포트 22가 열려 있습니다. 실제로는 보안 강화를 위해 가상 네트워크에 대한 VPN 액세스를 구성할 수 있습니다.
요약
귀하의 3계층 애플리케이션은 현재 미국 동부 지역의 Azure에서 실행 중입니다. 지역이란 특정 지리적 위치 내에 있는 Azure 데이터 센터입니다.
각 계층은 하위 계층에서만 서비스에 액세스할 수 있습니다. 웹 계층에서 실행 중인 VM은 인터넷에서 트래픽을 수신하므로 공용 IP 주소가 있습니다. 하위 계층의 VM은 애플리케이션과 데이터 계층이며, 인터넷을 통해 직접 통신하지 않으므로 개인 IP 주소가 있습니다.
가상 네트워크를 사용하면 관련 시스템을 그룹화하고 격리할 수 있습니다. 가상 네트워크를 통해 전달될 수 있는 트래픽을 제어하려면 네트워크 보안 그룹을 정의합니다.
여기서 살펴본 구성이 좋은 출발점입니다. 하지만 클라우드의 프로덕션 환경으로 전자상거래 사이트를 배포하면 온-프레미스 배포와 동일한 문제가 발생할 수 있습니다.