728x90

1. App Service

App Service 사용

웹 서비스를 하기 위한 준비 단계

개발자가 자신이 개발한 HTML, CSS, JavaScript 코드를 사용하여 물리적 컴퓨터를 통해 웹 서비스를 제공하려면

   준비할 것이 있다.

1. 서버 컴퓨터 준비

  • 인터넷에 연결된 물리적 서버

  • 서버 운영을 위한 운영 체제(OS)가 필요(라이선스까지)

 

2. 웹 서버 소프트웨어 설치 및 구성하기

  • Apache, Nginx, 또는 Microsoft IIS와 같은 웹 서버 소프트웨어를 설치

  • 웹 서버 소프트웨어의 설정 파일을 수정하여 웹 사이트가 올바르게 동작하도록 구성

 

3. 도메인 이름 설정

  • 인터넷 상에서 쉽게 접근할 수 있도록 도메인 이름을 등록

  • 해당 도메인을 관리하기 위한 DNS Server 운영

 

4. 방화벽 및 네트워크 설정

  • 방화벽에서 80/443 포트를 허용

  • 고정 Public IP가 필요

 

5. 웹 사이트 파일 배포

  • 개발한 HTML, CSS, JavaScript 파일을 웹 서버의 루트 디렉토리에 저장

  • Linux 서버의 경우, 웹 서버가 파일을 읽고 제공할 수 있도록 적절한 파일 권한을 설정

 

6. SSL 인증서 설정 (HTTPS 활성화)

  • 웹 사이트의 보안을 강화하기 위해 SSL 인증서를 구매하거나 Let's Encrypt와 같은 무료 인증서를 사용할 수 있다

  • 이 인증서를 웹 서버에 설치하여 HTTPS를 활성화한다

 

7. 테스트 및 유지 관리

  • 외부에서 웹 사이트에 접근하여 모든 기능이 제대로 동작하는지 테스트

  • 서버의 상태를 모니터링하고, 운영 체제 및 웹 서버 소프트웨어의 보안 업데이트를 주기적으로 적용

 

8. 백업 및 복구 계획

  • 웹 서버의 데이터를 정기적으로 백업하여 데이터 손실에 대비

  • 문제가 발생했을 때 빠르게 복구할 수 있도록 계획을 세운다.

 

Azure App Service란?

Azure App Service는 Microsoft Azure의 PaaS(Platform as a Service) 솔루션으로, 개발자가 Web App,

   API 및 Mobile, Backend를 빠르고 쉽게 구축, 배포 및 확장할 수 있도록 지원한다.

Azure App Service는 다양한 프로그래밍 언어와 프레임워크를 지원하며, 클라우드에서의 애플리케이션 관리를

   단순화하는 여러 가지 기능 제공

주요 기능

  • 다양한 언어 및 프레임워크 지원

    • 다양한 Language(Java, Python, PHP, Ruby, C# (for .NET), JavaScript (for Node.js)와 다양한 Framework(.NET

       (C#과 함께 사용), Spring (Java와 함께 사용), Express (Node.js와 함께 사용), Django/Flask (Python과 함께 사용),

       Laravel (PHP와 함께 사용), Ruby on Rails (Ruby와 함께 사용))를 지원한다.

    • ASP.NET, Django, Flask, Spring, Express.js 등 인기 있는 Web Framework와의 통합도 가능하다.

  • 자동 확장 및 부하 분산

    • 트래픽에 따라 애플리케이션을 자동으로 확장할 수 있다.

    • 또한, 부하 분산 기능을 통해 고가용성과 안정성을 유지할 수 있다.

  • 연속적 통합 및 배포(CI/CD)

    • GitHub, Azure DevOps, Bitbucket 등과의 연동을 통해 자동화된 배포 파이프라인을 설정할 수 있다.

    • 이를 통해 코드 변경 사항이 자동으로 빌드되고, 테스트되며, 배포된다.

  • 보안 기능

    • Entra ID, OAuth, 및 여러 인증 제공자를 통해 애플리케이션의 보안을 강화할 수 있다.

    • TLS/SSL 인증서를 통해 HTTPS를 손쉽게 설정할 수 있으며, VNet 통합을 통해 네트워크 보안을 강화할 수 있다.

  • 개발 및 테스트 환경 제공

    • 개발자들은 Azure App Service의 Slot 기능을 통해 프로덕션 환경과 별도의 개발, 테스트 환경을 손쉽게 설정하고 전환할 수 있다.

  • 모니터링 및 로깅

    • Azure Monitor, Application Insights 등의 서비스를 통해 애플리케이션의 성능 및 오류를 실시간으로 모니터링하고 분석할

       수 있다.

  • 비용 효율성

    • 필요에 따라 리소스를 확장 및 축소할 수 있으므로, 사용량에 따른 비용을 효율적으로 관리할 수 있다.

 관리의 용이성

    • Azure Portal, Azure CLI, Azure PowerShell 등을 통해 애플리케이션을 손쉽게 관리하고 설정할 수 있다.

    • 백업 및 복구 기능을 통해 데이터를 안전하게 보호할 수 있다.

 

Azure App Service 계획

실행할 Web App에 대한 컴퓨팅 리소스 집합을 정의하여, 성능, 가격, 기능을 결정한다.

하나 이상의 App을 동일한 App Service 계획에서 실행하도록 구성할 수 있다.

Azure App Service 계획

App Service 계획 크기 조정

언제든지 필요에 따라 Scale Up/Down 및 Scale Out/In할 수 있다.

App Service 계획 크기 조정

App Service 생성하기-Code

App Service를 클릭하여 필요한 Web App을 쉽게 생성할 수 있다.

  • name은 반드시 소문자만

App Service 생성하기

Deployment Slot

index.html과 같은 코드 파일을 업로드할 위치는 GitHub, Local git 등이 있다.

이곳에 원본 파일을 업로드하여 웹서비스를 할 수 있다.

Deployment Slot

 

Deployment Slot에서 Slot를 만들어Staging Site를 생성한다.

Add Slot

Staging Site로 이동한 후 Deployment Center에서 GitHub 대신 Local Git을 사용하여 index.php 파일을 업로드한다.

Deployment Center

 

CloudShell을 실행하여 아래 파일을 다운로드한다.

  • git clone git clone https://github.com/Azure-Samples/php-docs-hello-world.git

  • 파일을 다운로드하여 디렉터리를 만든다.

  • 이 디렉터리가 Local Git Repository가 된다.

index.php

생성한 Web App의 Local Git Server(Remote Repository 역할)의 Alias를 aihelper24admin로 지정함.

  • git remote add aihelper24admin https://yslee2024-staging.scm.azurewebsites.net:443/yslee2024.git

  • git remote

git remote add

  • 연결된 Remote Git server 정보가 나타남

  • git remote remove origin

  • git remote

git remote remove

Local Repository의 Branch 확인하기(master임)

  • git status | more

Local Git Repository의 master branch 파일(index.php)을 모두 Remote Git Server인 aihelper24admin으로

   업로드한다.

  • git push aihelper24admin master

  • username과 password를 입력한다. 그러면 index.php파일이 업로드 된다.

git push

새롭게 index.php 파일이 업로드된 staging 웹사이트를 확인한다.

Staging 확인

Staging Site를 원래 홈페이지와 교환하기

아래와 같이 진행하면 서비스 중단 없이 New Home Page가 탄생하게 된다.

Swap

이제 원래 홈페이지에 접속해본다

https://yslee2024.azurewebsites.net

홈페이지에 접속

App Service 생성하기-Container

docker image 파일만 있으면 쉽게 서비스를 배포할 수 있다.

  • docker image: pengbai/docker-supermario

  • Port: 8080

Create Web App

8080 포트 설정하기

8080 포트 설정하기

접속하기

접속하기

Static Web App 생성

Azure Static Web Apps는 주로 현대적인 Frontend Framework(예: React, Angular, Vue.js)로 구축된 정적

   웹 애플리케이션을 호스팅하기 위해 설계되어, 자동 CI/CD와 Backend API 통합 같은 고급 기능을 제공

주요 특징

  • 자동 배포(CI/CD): GitHub 또는 Azure DevOps와 통합되어 코드 변경 사항이 자동으로 배포됩니다. 이는 개발 워크플로우의

     효율성을 크게 향상시킨다.

  • Serverless API 통합: Azure Functions를 사용하여 Backend API를 손쉽게 추가할 수 있다. 이는 정적 웹 사이트와 동적

     기능을 결합할 때 유용하다.

  • Custom Domain 및 HTTPS: 간단하게 Custom Domain을 설정할 수 있으며, 자동으로 HTTPS 인증서가 관리된다.

  • 라우팅 및 인증 관리: 정교한 라우팅 규칙과 인증/인가 기능을 제공하여 사용자가 보다 복잡한 애플리케이션을 구축할 수 있다.

  • 모니터링 및 진단: Azure Monitor 및 Application Insights와 연동되어 모니터링과 진단 기능을 제공한다.

사용 사례

  • 싱글 페이지 애플리케이션(SPA)

  • 정적 웹 사이트 + API (Serverless Backend)

  • Frontend와 Backend가 결합된 복잡한 웹 애플리케이션

Storage Account에서 Static Web Site를 사용하는 경우

  • 간단하고 비용 효율적인 정적 콘텐츠를 제공해야 할 때 적합하다.

  • 복잡한 설정이 필요 없고, 기본적인 웹 사이트나 문서/이미지 제공 용도에 알맞다.

App Service에서 Static Web Apps를 사용하는 경우

CI/CD, Serverless API, 인증/인가와 같은 고급 기능이 필요하거나, React, Angular, Vue.js 등과 같은 프레임워크로 개발된 현대적인

   웹 애플리케이션을 호스팅할 때 적합하다.

비용은 더 들지만, 개발과 운영의 편의성이 높다.

 

Custom Domain Name

Azure에서 제공되는 URL이 아닌 우리 회사 도메인으로 접속할 수 있게 하는 것이다.

Custom Domains
Custom Domain Name

Azure Service Backup하기

수동으로 앱 백업을 만들거나 일정에 따라 만든다.

앱에 연결된 구성, 파일 콘텐츠 및 데이터베이스를 백업한다.

표준 또는 프리미엄 계획이 필요하다.

최대 10GB의 앱과 데이터베이스 콘텐츠를 백업할 수 있다.

요청 시 앱을 이전 상태로 복원하거나 새 앱을 만든다.

Azure Service Backup

2. Azure Kubernetes Service

Azure Kubernetes Service

서비스를 배포하고 운영할 때 Container로 하면 좋은 점

Physical Machine VS Virtual Machine VS Container

Container vs Virtual MachineAzure Kubernetes Service

컨테이너 VS 가상머신

AKS로 웹 서비스 운영하기

AKS를 구성만 하면 그 이후에는 일반적인 Kubernetes 서비스의 명령어와 동일하다.

  • CloudShell에서 명령어로 작업하는 것이 편리하다.

AKS를 위한 Resource Group 생성하기

  az group create -n aksRG -l eastus

AKS Cluster 생성하기: 2~3분 걸림

  • az aks create -g aksRG -n aksCluster --node-count 2 --node-vm-size Standard_B2ms --generate-ssh-keys

AKS Cluster에 접속하기

  az aks get-credentials -g aksRG -n aksCluster

  kubectl get nodes -o wide

Pod을 Deployment로 배포한다.

  • kubectl create deployment mydemo --image=jesuswithme/nginxdemos --replicas=4

  • kubectl get pods -o wide

  • kubectl create service loadbalancer mydemo --tcp=80:80

  • kubectl get services -o wide (공인 IP를 받아야 함)

  • 공인 IP를 복사하여 In-Private Browsing으로 여러 번 접속하여 본다.

AKS로 웹서비스 운영하기

AKS로 웹 서비스 운영하기

서비스를 하는 Pod 수량을 50으로 증가시킨다.

  • kubectl scale deployment mydemo --replicas=50

  • kubectl get pods -o wide

kubectl scale deployment mydemo --replicas=50

다시 Pod 수량을 2개로 감소시킨다.

  • kubectl scale deployment mydemo --replicas=2

  • kubectl get pods -o wide

kubectl scale deployment mydemo --replicas=2

특정한 Pod을 하나 삭제한다.

  • kubectl delete pods mydemo-68bcb967cd-7rd5v

  • kubectl get pods -o wide

kubectl delete pods mydemo-68bcb967cd-7rd5v

  • ##다시 자동으로 생성되는 것을 알 수 있다.

 

node 수량을 3개로 늘린다.

  • az aks scale -n aksCluster -g aksRG -c 3

  • kubectl get node -o wide (##3개로 증가된 것을 확인할 수 있다)

300x250