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 계획에서 실행하도록 구성할 수 있다.

• App Service 계획 크기 조정
• 언제든지 필요에 따라 Scale Up/Down 및 Scale Out/In할 수 있다.

• App Service 생성하기-Code
• App Service를 클릭하여 필요한 Web App을 쉽게 생성할 수 있다.
• name은 반드시 소문자만

• Deployment Slot
• index.html과 같은 코드 파일을 업로드할 위치는 GitHub, Local git 등이 있다.
• 이곳에 원본 파일을 업로드하여 웹서비스를 할 수 있다.

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

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


• CloudShell을 실행하여 아래 파일을 다운로드한다.
• git clone git clone https://github.com/Azure-Samples/php-docs-hello-world.git
• 파일을 다운로드하여 디렉터리를 만든다.
• 이 디렉터리가 Local Git Repository가 된다.

• 생성한 Web App의 Local Git Server(Remote Repository 역할)의 Alias를 aihelper24admin로 지정함.
• git remote add aihelper24admin https://yslee2024-staging.scm.azurewebsites.net:443/yslee2024.git
• git remote

• 연결된 Remote Git server 정보가 나타남
• git remote remove origin
• git remote

• 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파일이 업로드 된다.

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

• Staging Site를 원래 홈페이지와 교환하기
• 아래와 같이 진행하면 서비스 중단 없이 New Home Page가 탄생하게 된다.

• 이제 원래 홈페이지에 접속해본다
• https://yslee2024.azurewebsites.net

• App Service 생성하기-Container
• docker image 파일만 있으면 쉽게 서비스를 배포할 수 있다.
• docker image: pengbai/docker-supermario
• Port: 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이 아닌 우리 회사 도메인으로 접속할 수 있게 하는 것이다.


• Azure Service Backup하기
• 수동으로 앱 백업을 만들거나 일정에 따라 만든다.
• 앱에 연결된 구성, 파일 콘텐츠 및 데이터베이스를 백업한다.
• 표준 또는 프리미엄 계획이 필요하다.
• 최대 10GB의 앱과 데이터베이스 콘텐츠를 백업할 수 있다.
• 요청 시 앱을 이전 상태로 복원하거나 새 앱을 만든다.

2. Azure Kubernetes Service
Azure Kubernetes Service
• 서비스를 배포하고 운영할 때 Container로 하면 좋은 점

• Container vs Virtual MachineAzure Kubernetes Service

• 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로 웹 서비스 운영하기
• 서비스를 하는 Pod 수량을 50으로 증가시킨다.
• kubectl scale deployment mydemo --replicas=50
• kubectl get pods -o wide

• 다시 Pod 수량을 2개로 감소시킨다.
• kubectl scale deployment mydemo --replicas=2
• kubectl get pods -o wide

• 특정한 Pod을 하나 삭제한다.
• kubectl delete pods mydemo-68bcb967cd-7rd5v
• kubectl get pods -o wide

• ##다시 자동으로 생성되는 것을 알 수 있다.
• node 수량을 3개로 늘린다.
• az aks scale -n aksCluster -g aksRG -c 3
• kubectl get node -o wide (##3개로 증가된 것을 확인할 수 있다)
'Study > Azure Cloud' 카테고리의 다른 글
[Azure 정리]7. Load Balancer & Application Gateway (0) | 2025.01.02 |
---|---|
[Azure 정리]6. Azure Firewall & Azure DNS (0) | 2025.01.02 |
[Azure 정리]5. Virtual Network & NSG (0) | 2025.01.02 |
[Azure 정리]4. Storage Account 사용하기 (6) | 2025.01.02 |
[Azure 정리]3. Virtual Machine 사용하기 (6) | 2025.01.02 |