Azure WebApp on Linux와 .NET Core 남정현 Microsoft MVP (Microsoft Azure)
클라우드 모델 직접 운영 IaaS PaaS SaaS 직접 관리해야 할 부분 직접 관리해야 할 부분 네트워킹 저장소 서버 가상화 직접 관리해야 할 부분 직접 관리해야 할 부분 네트워킹 저장소 서버 가상화 운영 체제 미들웨어 런타임 응용프로그램 데이터 직접 관리해야 할 부분 네트워킹 저장소 서버 가상화 운영 체제 미들웨어 런타임 응용프로그램 데이터 네트워킹 저장소 서버 가상화 운영 체제 미들웨어 런타임 응용프로그램 데이터 네트워킹 저장소 서버 가상화 운영 체제 미들웨어 런타임 응용프로그램 데이터 직접 관리해야 할 부분 공급자 책임 공급자 책임 공급자 책임
Infrastructure Services Platform Services Security and Management Azure AD B2C Multi-Factor Authentication Automation Portal Key Vault Store/ Marketplace VM Image Gallery and VM Depot Active Directory Security Center Scheduler Hybrid Operations Backup Azure Site Recovery Import/Export AD Privileged Identity Management Operational Insights Azure AD Connect Health StorSimple Domain Services Media and CDN Content Delivery Network Media Services Media Analytics Integration BizTalk Services Service Bus API Management Logic Apps Application Platfoem Cloud Services Service Fabric Web Apps Mobile Apps API Apps Notification Hubs Functions Compute Service Batch Remote App Container Service VM scale Sets Dev/Test Lab Developer Services Visual Studio Mobile Engagement Application Insights VS Team Service HockeyApp Xamarin Data Tables DocumentDB SQL Database Redis Azure Search SQL Data Warehouse SQL Server Stretch Database Intelligence Cognitive Services Cortana Bot Framework Analytics and IoT HDInsight Machine Learning Stream Analytics Data Factory Event Hubs Data Catalog Data Lake Analytics Service Data Lake Store IOT Hub Power BI Embedded Infrastructure Services Compute Virtual Machine Containers Storage BLOB Queues Disk Files Networking Virtual Network Express Route Traffic Manager Application Gateway DNS VPN Gateway Load Balancer Datacenter Infrastructure (38 regions 30 online)
Azure App Service 왜 App Service인가 보안 업데이트, 인프라 운영에 대한 부담 최소화 특정 VM에 집중하지 않고 필요에 따라 VM을 언제든 교 체하거나, 추가 또는 제거할 수 있음 규모의 확장과 축소가 자유로워 운영 시의 고정 비용 최 소화
Azure App Service Web App Logic App API App Mobile App Functions
App Service의 아키텍처 배포 서버 파일 서버 게시 지점 BLOB 저장소 응용프로그램 데이터베이스 Microsoft Azure 로드 밸런서 프론트엔드 (IIS ARR) 과금 단위 런타임 데이터베이스 API 끝점
Azure App Service 다른 포지션, 같은 코어 Web App, API App, Logic App, Mobile App, Function까지 전부 같은 코어와 아키텍처를 사용 용도에 맞게 특화된 프론트엔드 제공: Logic App, Mobile App 새로운 유형의 서비스: Function Function의 경우만 과금 단위에 차이가 있음
Azure App Service Windows Server를 기본으로 사용 백그라운드 작업은 Web Job을 활용 Web App, API App, Mobile App, Logic App, Function App 까지 기본적으로는 모두 IIS PHP, Node JS 등을 지원할 수 있는 이유는 IIS HTTP Platform Handler 덕분 백그라운드 작업은 Web Job을 활용
WebApp on Linux
WebApp과 IIS와 ASP.NET 익히 알고 계시듯, IIS에서 가장 직접적이고 강 결합 된 기술 세트가 ASP.NET입니다. 전통적인 IIS 호스팅과의 차이점 한 대의 웹 서버 내에서 자원을 배분하도록 구성하는 형 태가 아니라 작은 크기의 VM을 이용하여 웹 팜을 구성 개별 VM 내의 상태에 영향을 받지 않게 구성하는 것이 중 요 (예: 파일 시스템, 시스템 환경 변수 등에 액세스)
다른 언어와 기술 스택 패턴 1: IIS에서 Fast CGI 형태로 실행 PHP가 대표적 패턴 2: 인스턴스 내에서 IIS와 Side-by-Side로 타 프 레임워크의 웹 인스턴스가 동시에 실행됨 Java (Apache Tomcat), Go, Python 등이 이 경우 HTTP Platform Handler라는 IIS Extension을 사용
다른 언어와 기술 스택 미묘한 문제 언어를 PHP, Go, Java로 사용할 수 있다는 점을 제외하 면 Windows Server를 기준으로 해야 함 파일 입출력이나 시스템 수준의 프로세스 호출 등에서 큰 차이가 있어 다루기 난해한 면이 있음
Azure Web App 이해하기 Azure App Service의 주요 4개 서비스 중 한 가지 Logic App, Mobile App, API App, Function과 같은 코어 모두 IIS + Windows Server 기반 IIS에 HTTP Platform Handler 추가 이를 통해서 닷넷과 PHP가 아닌 Ruby, Python, Java 등 을 지원하게 됨 그러나 Windows Server 기반
Azure Web App on Linux 그래서 나왔습니다. Azure Web App on Linux IIS + Windows 대신 Docker 기반으로 서비스 구현 Node.JS, PHP, .NET Core, Ruby 지원
.NET Core
.NET Framework와 .NET Core 11/20/2018 4:05 PM .NET Framework와 .NET Core Visual Basic .NET Visual Basic .NET (출시 예정) C# Web Forms MVC 5.x Web API 2.2 ASP.NET Core 1.0 기능: MVC, API 등 ASP.NET 4.6 / System.Web ASP.NET Core 1.0 Core CLR .NET Native ASP.net core is built for performance, scalability and to be cross platform. Web forms is not supported in asp.net core Only support for c# .NET Framework 4.6 .NET Core 1.0 Windows 상에서 모든 시나리오와 라이브러리를 지원하는 전체 버전의 .NET Framework 서버와 클라우드 환경에 최적화된 모듈화된 라이브러리와 런타임 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ASP.NET MVC와 Web API가 더 이상 개별 프레임워크가 아니라 하나의 ASP.NET Core입니다. 11/20/2018 4:05 PM ASP.NET MVC와 Web API가 더 이상 개별 프레임워크가 아니라 하나의 ASP.NET Core입니다. They are not separate pieces, its all built in. © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ASP.NET Core 1.0 컨셉의 단일화 – 중복 최소화 웹 UI와 웹 API 의존성 주입 중심의 기능 확장 IIS 또는 자체 호스팅 환경에서 실행 더 이상 IIS에 종속되지 않음
ASP.NET Core 1.0 – 핵심 빠른 속도 완전한 모듈화 빠른 개발 주기 클라우드와 온-프레미스 간 쉽고 빠른 전환 원하는 에디터나 도구를 자유롭게 선택 가능 OSS 오픈 소스 프로젝트 수많은 Contributor들과 함께 크로스 플랫폼 빠른 속도
Mono와의 관계 Oracle Java와 OpenJDK 간의 관계와 유사 반면 Mono와 .NET Core는 서로 다른 물건 .NET Framework (Full): Microsoft가 구현 Mono (Full): 오픈 소스 프로젝트, Microsoft가 스폰서 반면 Mono와 .NET Core는 서로 다른 물건 이렇게 하세요. ASP.NET 4.x를 크로스 플랫폼으로 전환하려면 Mono와 XSP를 대상으로! 새로운 닷넷 코드를 만들고 크로스 플랫폼이 목표라면 ASP.NET Core를 대상으로!
Demonstration with WAOL/.NET Core
WAOL Preview 제약 사항 일반적인 사항 .NET Core 관련 WAOL용 App Service Plan이 따로 있습니다. 해당 Plan은 Resource Group 당 하나만 존재 가능합니다. IIS 기반 KUDU보다 기능 제약이 많고 콘솔에 버그가 있 습니다. .NET Core 관련 현재 버전의 프리뷰에서는 dotnet publish 명령으로 만들 어진 완성된 배포본만 FTP/Git으로 배포 가능합니다. 추후 Source 기반 Deploy가 가능해질 것입니다.
WordPress를 WAOL에 설치하기 Step 1: Web Apps On Linux와 ClearDB 생성 Step 2: FTP 설정 및 WordPress 업로드 Step 3: WordPress 설치 및 ClearDB 연결하기 Step 4: JetPack 설치, 안쓰는 플러그인 제거
.NET Core를 Azure VM (CentOS) Docker에서 실행 Step 1: CentOS 7 VM 생성 후 Docker 설치 Step 2: 콘솔 앱 프로젝트 생성 및 내용 분석 Step 3: 샘플 앱 프로젝트 실행해보기 Step 4: ASP.NET MVC Core 프로젝트 생성 및 시작 Step 5: Azure Network Security Group 변경 Step 6: 외부에서 접속 테스트하기
SQL Server on Linux를 Azure VM (CentOS) Docker에서 실행 Step 1: SQL Server on Linux Docker VM 기동 Step 2: Azure NSG 변경 (앞 Demo의 Step 5 참조) Step 3: Management Studio로 접속 후 기능 테스트
마무리
도입 시 고려해야 할 사항 App Service가 적합한 경우 App Service가 적합하지 않은 경우 사용량이 일정하지 않은 솔루션 인프라 유지 관리가 어려운 경우 서비스 수명 주기가 2~3년 이내로 짧은 경우 App Service가 적합하지 않은 경우 VM 내 상태에 의존적인 애플리케이션 고정 사용량이 있는 솔루션
공지 사항
Saturday Azure Live! 1703 3월 행사는 오픈 소스 기반 기술들과 Azure 플랫폼 사이의 연계를 테 마로 구성하였습니다. 2017년 3월 행사에 함께하시는 게스트는 다음과 같습니다. 최영락 한국 OpenStack 사용자 그룹 회장, C&D Mgmt. MVP 이진석 AskDjango 운영자, Azure MVP Syed Shanu Visual Studio Dev. Tools. MVP, CodeProject MVP 행사 접수가 시작되었습니다. 자세한 정보는 http://krazure.club 에서 확인할 수 있습니다.
혼자 고민하지 마세요. 전문가와 상의하세요.
고맙습니다 :-)