Azure- 9회차

박형준·2024년 5월 24일

Configure Azure App Service Plans

Implement Azure App Service Plans

  • App Service Plan은 웹 앱이 실행될 컴퓨팅 리소스를 정의하고 가격, 성능, 기능을 결정합니다.

  • 웹 앱이 실행될 지역, 가상 머신 인스턴스의 수, 인스턴스 크기, 가격 층 등을 설정할 수 있습니다. 하나 이상의 앱이 동일한 App Service Plan에서 실행될 수 있습니다.

Determine App Service Plan Pricing

  • Shared compute(무료 및 공유)은 다른 App Service 앱과 동일한 Azure VM에서 앱을 실행하며, 리소스를 확장할 수 없습니다.

  • Dedicated compute(베이직, 스탠다드, 프리미엄)은 동일한 계획 내에서 전용 Azure VM에서 앱을 실행합니다.

  • Isolated은 전용 Azure VM 및 전용 Azure 가상 네트워크에서 앱을 실행합니다. ( 보완상 안전 )


Scale Up and Scale Out the App Service Plan

  • App Service 플랜의 확장은 다음과 같이 두 가지 방법으로 이루어집니다.

    • Scale up (App Service 플랜 변경):

      • 더 많은 하드웨어 (CPU, 메모리, 디스크) 및 기능 (전용 가상 머신, 스테이징 슬롯, 오토스케일링)을 얻기 위해 플랜을 업그레이드합니다. ( 인스턴스의 resize와 유사 )
    • Scale out (가상 머신 인스턴스 수 증가):

      • 수동으로 (고정된 인스턴스 수) 또는 오토스케일링을 통해 (미리 정의된 규칙 및 일정에 따라) 가상 머신 인스턴스의 수를 증가시킵니다.

Configure App Service Plan Scaling

  • 현재 수요에 따라 사용 가능한 리소스를 조정하고 가용성 및 장애 허용성을 향상시키기 위해 다음과 같은 방법을 사용하여 스케일링을 수행할 수 있습니다:

    • 지표에 따른 스케일링 (CPU 사용률, 메모리 사용률, HTTP 요청 등):

      • 특정 지표를 기준으로 자동으로 스케일링을 조정합니다.
    • 일정에 따른 스케일링 (평일, 주말, 특정 시간, 공휴일):

      • 일정에 따라 자동으로 스케일링을 조정합니다.
    • 여러 규칙 적용 가능:

      • 여러 가지 규칙을 조합하여 사용할 수 있으며, 여러 메트릭 및 일정을 조합하여 스케일링을 수행할 수 있습니다.
    • 스케일링 인 (Scale In):

      • 스케일 아웃과 반대로, 수요가 줄어들 때 리소스를 축소하여 비용을 절감하고 효율성을 높일 수 있습니다.

Implement Azure App Service

  • Azure App Service는 Web Apps, API Apps, Mobile Apps, 그리고 Function Apps를 포함하고 있으며, 고생산성 개발을 가능하게 하는 완전 관리형 환경을 제공합니다.

  • 이는 웹 및 모바일을 위한 고가용성 클라우드 앱을 구축하고 배포하기 위한 플랫폼으로, 인프라를 처리하여 개발자가 핵심 웹 앱과 서비스에 집중할 수 있도록 합니다. 또한, .NET, .NET Core, Java, Python 등 다양한 언어를 활용하여 개발자 생산성을 높이며, 기업급 보안과 규정 준수를 제공합니다.

이 내용은 Azure App Service의 설정과 관련된 것으로 보입니다.

  • 이름은 고유해야 합니다: Azure App Service의 앱 이름은 고유해야 합니다.

  • azurewebsites.net을 통한 액세스 - 사용자 정의 도메인으로 매핑 가능: Azure App Service를 통해 azurewebsites.net 도메인을 통해 액세스할 수 있으며, 사용자 정의 도메인으로 매핑할 수 있습니다.

  • 코드 배포 (런타임 스택): 코드를 배포할 수 있으며, 런타임 스택을 선택할 수 있습니다.

  • 도커 컨테이너 배포: 도커 컨테이너를 사용하여 배포할 수 있습니다.

  • Linux 또는 Windows: 앱을 호스팅할 플랫폼으로 Linux 또는 Windows를 선택할 수 있습니다.

  • 사용자에 가장 가까운 지역: 사용자에게 가장 가까운 지역에 App Service를 생성할 수 있습니다.

  • App Service Plan: 앱 서비스 플랜을 선택하여 앱의 확장 및 가격 책정을 관리할 수 있습니다.

Create Deployment Slots

  • 다른 배포 슬롯으로 배포:

    • 서비스 플랜에 따라 다른 배포 슬롯으로 앱을 배포할 수 있습니다.
  • 변경 사항을 검증 후 프로덕션으로 전송:

    • 프로덕션으로 전송하기 전에 변경 사항을 검증할 수 있습니다.
  • 배포 슬롯은 고유한 호스트명을 가진 라이브 앱:

    • 배포 슬롯은 고유한 호스트명을 가지며, 자체의 라이브 앱입니다.
  • 콜드 스타트를 피하고 다운타임을 제거:

    • 콜드 스타트를 피하고 다운타임을 제거하여 앱의 가용성을 높일 수 있습니다.
  • 마지막으로 알려진 좋은 사이트로의 롤백:

    • 마지막으로 알려진 좋은 사이트로 롤백할 수 있습니다.
  • 자동 스왑 (Auto Swap) - 프리-스왑 검증이 필요 없을 때:

    • 프리-스왑 검증이 필요 없을 때 자동으로 스왑할 수 있습니다.

Secure an App Service

  • 인증:

    • 인증 활성화 - 기본적으로 익명

    • 타사 신원 공급자로 로그인

  • 보안:

    • 진단 로그를 통한 문제 해결 - 실패한 요청, 앱 로깅

    • SSL 인증서 추가 - HTTPS

    • 네트워크 액세스 제어를 위한 우선순위 순서대로 허용/거부 목록 정의

    • Azure Key Vault에 비밀을 저장

Create Custom Domain Names ( 공인 도메인 )

  • 기본 웹 앱 URL을 리디렉션하고,
    Azure에서 사용자 정의 도메인을 검증하며,

  • 도메인 제공업체의 DNS 레지스트리를 사용하여 매핑된 CNAME 또는 A 레코드를 생성하고,
    App Service 플랜이 사용자 정의 도메인을 지원하는지 확인하십시오.

Backup an App Service

  • 앱을 수동으로 또는 일정에 따라 백업하고,
    구성, 파일 콘텐츠, 그리고 앱에 연결된 데이터베이스를 백업하며,
    스탠다드 또는 프리미엄 플랜이 필요하며,

  • 백업은 최대 10GB의 앱 및 데이터베이스 콘텐츠를 지원하며,
    부분 백업을 구성하고 백업에서 항목을 제외할 수 있습니다.
    필요에 따라 앱을 이전 상태로 복원하거나 새 앱을 만들 수 있습니다.


Configure Azure Container Instances

Compare Containers to Virtual Machines

  • Isolation

  • Operating System

  • Deployment

  • Persistent storage

  • Fault tolerance

Understand Container Images

  • 컨테이너 이미지는 애플리케이션을 실행하는 데 필요한 모든 것을 캡슐화한 경량이면서 독립적이며 실행 가능한 소프트웨어 패키지입니다.

도커 : docker Hub, Azure: Azure Container Registry

Explore Azure Container Instances Benefits

  • PaaS 서비스 ( 필요한 시스템 제공 )

  • 빠른 시작 시간

  • public IP 연결 및 DNS 이름

  • 고립화 기능

  • 사용자 정의 크기

  • 지속적인 저장소 ( Persistent storage )

  • Linux 및 Windows 컨테이너

  • Co-scheduled Groups ( 공동 예약 그룹 )

  • 가상 네트워크 배포 ( Virtual network Deployment )


Implement Container Groups

  • Azure Container Instances의 최상위 리소스는 "그룹"입니다.

  • 이 그룹은 동일한 호스트에 예약되는 컨테이너의 컬렉션입니다. 그룹 내의 컨테이너는 수명주기, 리소스, 로컬 네트워크 및 저장소 볼륨을 공유합니다.

Understand the Docker Platform

  • 개발자가 컨테이너 내에 애플리케이션을 호스팅할 수 있도록 합니다.

  • 컨테이너는 애플리케이션이 실행되는 데 필요한 모든 것을 포함하는 표준화된
    "소프트웨어 단위"입니다.

  • Linux와 Windows 양쪽에서 사용할 수 있으며 Azure에서 호스팅할 수 있습니다.

Manage Containers with Azure Container Apps

  • Azure Kubernetes Service의 대안으로, 컨테이너 오케스트레이션을 관리합니다.

  • 컨테이너 앱 환경은 앱과 작업 주변에 안전한 경계를 생성합니다.

  • 컨테이너 앱 런타임은 환경 관리를 담당하며(운영 체제 업그레이드, 스케일링, 버전 관리, 장애 조치), 안전한 경계를 유지합니다.

Compare container management solutions

Azure Container Apps: 쿠버네티스 서비스 제공과 쿠버네티스 자동 관리,
Azure Kubernetes Service: 쿠버네티스 서비스는 제공하지만 따로 관리

Azure의 Function은 AWS의 Lambda와 유사


Configure Azure Kubernetes Service

  • AKS는 health monitoring 및 유지 관리를 관리하며, 간단한 클러스터 스케일링을 수행합니다.

  • 또한 노드들을 Microsoft가 완전히 관리할 수 있도록 하며, 사용자는 에이전트 노드들만 관리하면 됩니다. 또한 사용자는 에이전트 노드에 대해서만 비용을 지불하게 됩니다.

Understand AKS Terminology

  • Pools: 동일한 구성을 갖는 노드들의 그룹
    Nodes: 컨테이너화된 애플리케이션을 실행하는 개별 가상 머신(VM)
    Pods: 어플리케이션의 단일 인스턴스. 하나의 Pod 안에는 여러 개의 컨테이너가 포함될 수 있음
    Deployment: Kubernetes에 의해 관리되는 하나 이상의 동일한 Pod들
    Manifest: 배포를 설명하는 YAML 파일

Understand AKS Clusters and Nodes

  • Azure 관리 노드는 핵심 Kubernetes 서비스 및 오케스트레이션을 제공하며, 고객이 직접 관리하는 노드는 애플리케이션을 실행하고 지원 서비스를 제공합니다. 각각의 개별 노드는 Azure 가상 머신입니다.

kubelet: kubelet은 Kubernetes 노드에서 실행되는 에이전트로, 클러스터 내의 각 노드에서 컨테이너화된 포드를 관리하고 실행합니다.
kubelet은 마스터 노드로부터 할당된 작업을 수행하고, 노드의 상태를 유지하며, 포드의 상태를 보고하고, 포드의 스케줄을 관리합니다. Kubernetes 시스템에서 중요한 역할을 하는 구성 요소 중 하나입니다.

kube-proxy: Kubernetes 클러스터 내에서 네트워크 프록시와 로드 밸런싱 기능을 수행하는 컴포넌트입니다.
이는 클러스터 내부의 서비스에 대한 네트워크 트래픽을 관리하고, 서비스 디스커버리와 로드 밸런싱을 처리합니다. kube-proxy는 각 노드에서 실행되며, 서비스의 가상 IP 주소를 사용하여 요청을 서비스의 백엔드 포드로 전달하는 역할을 합니다.

Configure AKS Networking

  • Pods는 애플리케이션의 인스턴스를 실행합니다. 서비스는 포드들을 그룹화하여 네트워크 연결성을 제공합니다.

  • ClusterIP는 내부 트래픽 접근을 제공하며, NodePort는 들어오는 직접적인 트래픽에 대한 매핑을 제공합니다. LoadBalancer( Application gateway도 사용 )는 들어오는 비직접적인 트래픽을 위한 외부 IP 주소를 가지고 있습니다.

Configure AKS Storage

  • 노드의 로컬 스토리지는 빠르고 사용하기 간편하지만, 해당 포드가 삭제된 후에는 이용할 수 없을 수 있습니다.

  • 여러 포드가 데이터 볼륨을 공유할 수도 있고, 스토리지는 다른 포드에 다시 연결될 수도 있습니다.

Configure AKS Scaling

  • 애플리케이션이 단일 포드의 용량을 넘어설 수 있습니다. 쿠버네티스에는 내장된 오토스케일러가 있습니다.

  • 클러스터 오토스케일러는 컴퓨팅 자원에 따라 확장하며, 수평 포드 오토스케일러는 메트릭에 따라 확장합니다.

Azure CNI: Azure Kubernetes Service(AKS)에서 사용되는 네트워킹 모델 중 하나입니다.
이 모델은 컨테이너 그룹을 Azure Virtual Network로 직접 연결하여 네트워크 리소스를 효율적으로 활용하고, 보안을 강화합니다. 또한 Azure CNI는 가상 네트워크 내에서 IP 주소를 동적으로 할당하여 각각의 파드에 직접 IP 주소를 부여합니다.

Microsoft Container Migration ToolL: 온프레미스 환경에서 Azure로 컨테이너 애플리케이션을 이동시키는 데 사용되는 도구입니다.
이 도구는 가상 머신에서 실행 중인 컨테이너화된 애플리케이션을 Azure Kubernetes Service(AKS) 또는 Azure Container Instances(ACI)로 이관할 수 있도록 지원합니다. 이를 통해 온프레미스 환경에서 Azure의 클라우드 기반 컨테이너 서비스로의 이동을 용이하게 합니다.

Azure Stack HCI: 온프레미스 환경에서 하이브리드 클라우드 서비스를 제공하기 위한 마이크로소프트의 솔루션입니다.
이는 하이퍼컨버지드 인프라스트럭처(HCI)를 기반으로 하며, 가상화, 스토리지, 네트워킹, 보안과 같은 기능들을 포함하고 있습니다. Azure Stack HCI를 사용하면 온프레미스 데이터 센터에서 Azure 서비스와의 일관성 있는 경험을 얻을 수 있으며, 하이브리드 클라우드 전략을 지원하고 새로운 마이그레이션 및 애플리케이션 현대화 시나리오를 지원합니다.

0개의 댓글