ASP.NET 웹 응용 프로그램을 Windows Azure 클라우드에 배포하기
이 강좌는 ASP.NET 응용 프로그램을 Windows Azure 클라우드 서비스에 Windows Azure SDK(Visual Studio 2010 또는 Visual Web Developer 2010 Express용)를 사용하여 배포하는 방법을 보여 드립니다.
Windows Azure 계정은 무료로 등록할 수 있습니다. 무료 계정을 등록하는 방법이 궁금하신 분은 "Windows Azure 한국계정 등록하기(무료 평가판)" 강좌를 참고하십시오. 만일, 여러분이 아직 비주얼 스튜디오 2012를 구입하지 않으셨다면, SDK가 자동으로 무료 도구인 비주얼 스튜디오 2012 Web Express를 설치해 줄 겁니다. 그렇기에, Windows Azure 개발을 일단 완전 무료로 시작해 볼 수 있습니다(그렇긴 하지만, 비주얼 스튜디오 2012 정식 버전을 사용하는 것이 장기적으로 정신 건강에 좋은 편이죠).
이 강좌는 여러분이 Windows Azure를 사용한 경험이 없다는 것을 전제로 합니다. 그렇기에, 이 강좌를 잘 이해하면 데이터 기반 웹 응용프로그램 및 클라우드 기반 실행 그리고 클라우드 데이터베이스를 사용하는 방법을 알 수 있게 될 것입니다.
이번 강좌에서 다루는 내용은 다음과 같습니다.
- Windows Azure SDK를 설치하여 여러분의 PC에서 Windows Azure 개발이 가능하도록 하는 방법
- Visual Studio로 ASP.NET MVC 3 프로젝트를 생성 및 수정하고 이를 Windows Azure 클라우드 상에서 동작하게 하는 방법
- SQL 데이터베이스 인스턴스의 데이터를 Windows Azure에 저장하는 방법
- 업데이트된 응용 프로그램을 Windows Azure에 배포하는 방법
이제 여러분은 간단한 ASP.NET MVC 3 및 ADO.NET Entity 프레임워크를 사용하는 데이터베이스 기반의 to-do list 웹 응용프로그램을 작성할 것입니다. 이 응용 프로그램은 한 개의 Web Role 인스턴스로 호스팅 되며, 이는 독립적인 가상 머신(VM)에 호스팅 되어 클라우드 기반에서 동작합니다. 아래 그림은 완성된 응용 프로그램을 보여줍니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-1.png
Windows Azure 계정 만들기
- 브라우저를 열고, http://www.windowsazure.com로 이동합니다.
무료 계정을 등록하기 위해서, 우측 상단에 있는 [무료 평가판(Free trial)]을 클릭하고, 다음 단계들을 진행하면 됩니다. 신원 증명을 위해서 신용 카드와 핸드폰 번호가 필요할 겁니다만, 요금이 과금되거나 하진 않습니다.

출처 : http://www.windowsazure.com/media/devcenter/shared/freetrialonwindowsazurehomepage.png
개발환경 설정
시작을 위해, Windows Azure SDK for the .NET 프레임워크를 설치하여 개발 환경 설정을 합니다.
우선, 여러분이 사용하는 Visual Studio 버전에 맞는 Windows Azure SDK를 설치합니다. 만약 여러분이 Visual Studio를 아직 설치하지 않았다면, 아래의 Visual Studio링크를 방문하여 SDK를 다운로드 받으세요.
Windows Azure SDK for Visual Studio 2010
Windows Azure SDK for Visual Studio 2012 RC
실행파일의 Run 또는 Save 확인 창이 나타나면, Run을 클릭하세요.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-3.png
설치 화면에서 Install 버튼을 클릭하여 설치 절차를 진행하세요.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-003.png
설치가 완료되면, 여러분은 개발을 하는 데 필요한 거의 모든 환경을 갖추게 된 것입니다.
ASP.NET MVC 3 응용 프로그램 생성
프로젝트 생성
-
Visual Studio 또는 Visual Web Developer Express를 관리자 권한으로 실행하세요. Windows 시작 메뉴의 Visual Studio(또는 Visual Web Developer Express)를 오른쪽 클릭하고 [관리자 권한으로 실행]을 클릭하세요. 나중에 언급할 Windows Azure 에뮬레이터는 관리자 권한으로 실행된 Visual Studio 환경이 필요합니다.
Visual Studio 의 File 메뉴 아래 New를 클릭하세요. 그리고 Project를 클릭하세요. Visual Web Developer 또는 VS Express의 경우에는 File 메뉴 아래의 New Project 를 클릭하세요.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-5.png
New Project 대화 상자 안에서 C# 항목을 확장하고, Web 아래 installed template 을 선택하시고, ASP.NET MVC 3 Application을 선택하세요.
참고: Visual Web Developer의 경우 이 템플릿은 Installed Templates > Visual C# > Web 에서 찾을 수 있습니다.
- 만약, 여러분이 Visual Studio 2012를 사용한다면, .NET 프레임워크 의 드롭다운 리스트 값을 .NET Framework 4로 변경하세요.
응용 프로그램의 이름을 ToDoListApp로 지정하고 OK를 클릭하세요.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-6.png
- New ASP.NET MVC 3 Project 대화상자 안에서, Internet Application 템플릿을 선택하고 Razor 를 뷰 엔진으로 선택하시고 OK를 누르세요.
응용프로그램 내에서 UI 텍스트 수정
Solution Explorer에서 Views\Shared 아래에 있는 _Layout.cshtml 파일을 불러옵니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-7.png
body 엘리먼트 안에서 h1 태그로 감싸진 페이지의 타이틀을 찾으세요. 제목 텍스트를 My MVC Application 에서 To Do List로 변경하세요. 다음의 위치를 변경하시면 됩니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-8.png
응용 프로그램을 로컬로 실행
동작하는지 확인하기 위해 응용 프로그램을 실행합니다.
Visual Studio에서 CTRL-F5를 누릅니다.
응용 프로그램이 브라우저에 나타날 것입니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-9.png
응용 프로그램을 Windows Azure 클라우드 서비스에 배포할 수 있도록 만들기
이제 응용 프로그램이 Windows Azure 클라우드 서비스 상에서 구동될 수 있도록 준비해야 합니다. 응용 프로그램은 클라우드에 배포되기 전에 Windows Azure 클라우드 서비스 project를 포함해야 합니다. 클라우드 서비스 project 는 응용 프로그램이 클라우드 환경에서 동작할 때 필요한 환경 정보를 제공하는 역할을 합니다.
Solution Explorer의 ToDoListApp 프로젝트에서 마우스 오른쪽 클릭을 하고, Add Windows Azure 클라우드 서비스 Project 를 클릭합니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-10.png
내장 멤버십 프로바이더를 사용하려면, ASP.NET Universal 프로바이더를 사용해야 합니다. 이 프로바이더는 여러분의 응용 프로그램 안에서 계정 관리 기능을 사용 가능하게 합니다.
프로바이더 패키지를 얻으려면 NuGet을 사용하면 됩니다.
Solution Explorer에서 ToDoListApp 프로젝트 위에서 오른쪽 마우스 버튼을 클릭하고 Manage NuGet Packages.. (또는 Add Library Package Reference.. , NuGet 구버전의 경우)를 클릭합니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-27-1.png
- ToDoListApp - Manage NuGet Packages 대화상자 안에서 좌측 패널의 search 항목을 확장하고 Online 노드를 클릭합니다.
우측 상단 코너의 Search Online 항목에 "universal providers" 를 입력합니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-27-2.png
- "ASP.NET Universal Providers" 패키지(오른쪽 패널의 Id에 "System.Web.Providers"라고 써진 것) 를 선택하고 Install을 클릭합니다.
- 설치가 끝난 후 ToDoListApp - Manage NuGet Packages 대화상자를 닫습니다.
- Solution Explorer에서, ToDoListApp 프로젝트의 루트 디렉터리의 Web.config 파일을 엽니다.
<configuration> / <connectionStrings> 엘리먼트 안의 DefaultConnection 연결 문자열을 삭제하고, 아래의 연결 문자열을 추가합니다.
<add name="DefaultConnection"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet_ToDoListApp;Integrated Security=True;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />
응용 프로그램을 테스트하기 위하여, CTRL-F5를 누릅니다.
그러면, Windows Azure 에뮬레이터가 시작됩니다. 에뮬레이터는 로컬 컴퓨터를 사용하여 여러분의 응용 프로그램이 마치 Windows Azure 환경에서 동작하는 것 같이 에뮬레이트 해 줍니다. 여러분은 에뮬레이터가 시작되었다는 것을 시스템 트레이에서 확인할 수 있습니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-10a.png
브라우저는 여러분의 응용 프로그램이 로컬에서 실행되는 것을 보여주며, 이것은 일반적인 ASP.NET MVC 3 응용 프로그램을 실행했을 때와 같은 모습, 기능으로 동작합니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-11.png
Windows Azure 에 응용 프로그램 배포하기
여러분은 Azure 관리 포털 또는 Visual Studio를 통해 직접 Windows Azure에 응용 프로그램을 배포할 수 있습니다. 이번 절에서는 어떻게 응용 프로그램을 Visual Studio에서 배포할 수 있는 지 보여줍니다.
Windows Azure에 응용 프로그램을 배포하기 위해서는 여러분의 계정이 필요합니다. 만약 아직 계정이 없다면, 무료 체험 계정을 만드실 수 있습니다.
일단 여러분의 계정으로 로그인이 되면, 여러분은 Windows Azure 퍼블리싱 프로파일을 다운로드 할 수 있습니다. 퍼블리싱 프로파일은 Visual Studio를 사용하여 Windows Azure에 패키지를 게시할 수 있게 하는 권한을 제공합니다.
Windows Azure 계정 생성
- 웹 브라우저를 열어서 http://www.windowsazure.com를 방문합니다.
무료 계정을 등록하려면, 우측 상단에 있는 [무료 평가판(Free trial)]을 클릭하고, 다음 단계들을 진행하면 됩니다. 신원 증명을 위해서 신용 카드와 핸드폰 번호가 필요할 겁니다만, 요금이 과금되거나 하진 않습니다.

출처 : http://www.windowsazure.com/media/devcenter/shared/freetrialonwindowsazurehomepage.png
응용 프로그램 퍼블리싱
Solution Explorer 안에 있는 ToDoListApp.Azure 프로젝트 즉, Windows Azure 클라우드 서비스 프로젝트 위에서 마우스 오른쪽 버튼을 클릭하세요. 여러분의 Visual Studio 버전에 따라 메뉴에서 Publish 또는 Publish to Windows Azure 를 클릭하여 퍼블리싱 절차를 시작합니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-13.png
처음 퍼블리싱을 하는 경우에는 제공되는 링크를 통해 크레덴셜을 다운로드 해야 합니다.
Sign in to download credentials을 클릭합니다

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-14.png
여러분의 Live ID로 Sign-in을 합니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-15.png
게시 프로파일을 여러분의 하드의 적절한 위치에 저장합니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-16.png
Publish Windows Azure Application 마법사에서, Import를 클릭합니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-17.png
- 방금 다운로드 받은 파일을 선택하고, Next를 클릭합니다.
게시(publish)에 사용할 Windows Azure 구독 계정을 고르십시오.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-18.png
만약 여러분의 구독 계정(subscription)이 어떤 클라우드 서비스도 갖고 있지 않다면, 새로운 서비스를 만들겠냐고 물어올 것입니다. 그 경우, 새로운 서비스를 하나 만들어 주도록 합니다. 클라우드 서비스는 Windows Azure 구독계정 안에서 응용 프로그램에 대한 컨테이너 역할로 동작합니다. 응용 프로그램을 식별할 이름을 입력하고, 응용 프로그램이 최적화될 지역을 선택합니다(선택된 지역에 있는 사용자들이 접근할 경우 빠른 로딩 시간을 기대할 수 있습니다)

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-19.png
응용 프로그램을 게시하고자 하는 클라우드 서비스를 선택 하세요. 나머지 설정은 기본값으로 두고 Next를 클릭하십시오:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-20.png
마지막 페이지에서 Publish를 클릭하여 배포를 시작하세요.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-21.png
이 작업은 약 5-7분 정도 소요됩니다. 게시가 처음 수행되기 때문에, Windows Azure는 가상 머신(VM)을 탑재하고, 보안 강화 설정을 조정하고, 여러분의 코드를 Web role에 배포하며, 응용 프로그램을 공용화 하기 위해 로드 밸런서와 네트워크 설정을 합니다.
게시가 진행되는 동안, 여러분은 Visual Studio 또는 Visual Web Developer 하단에 있는 Windows Azure Activity Log 창을 통해서 활동을 모니터링 할 수 있습니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-23.png
- 특정 활동 로그(여러분의 선택에 따라) 항목을 더블 클릭하면(예를 들어, 상단의 스크린샷처럼 "Deploying ToDoListApp.Azure to ToDoListApp955 - Production"를 클릭하면) 상세한 모니터링 뷰가 열리면서 배포에 대한 정보를 제공해 줍니다.
배포가 완료되면, 여러분은 모니터링 뷰 안의 Website URL 링크를 클릭하여 새로운 웹사이트를 볼 수 있습니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-24.png

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-25.png
SQL 데이터베이스 지원 추가하기
Windows Azure 는 두 가지의 기본 저장소 옵션을 제공합니다:
- Windows Azure 저장소 서비스는 blob과 테이블의 형태로 비 관계형 데이터 저장소를 제공합니다. 이는 사실상 무제한적인 저장소를 제공하기 위해서 무 정지(fault-tolerant), 고 가용성을 지원하고 자동으로 규모가 조절됩니다.
- SQL Database는 SQL 서버 기술 기반으로 만들어진 클라우드 기반의 관계형 데이터베이스 서비스를 제공합니다. 이 서비스도 무 정지 기능과 고 가용성을 지원합니다. 관련 도구와 응용 프로그램은 SQL 데이터베이스 뿐만 아니라 SQL 서버와도 잘 동작하도록 설계되어 있습니다. 하나의 SQL 데이터베이스 인스턴스는 100 GB 의 용량까지 확장할 수 있으며, 여러분은 여러 개의 인스턴스를 만들 수 있습니다.
이번 절에서는 데이터를 저장하는 데 SQL 데이터베이스 인스턴스를 1개 사용합니다. 원한다면, 응용 프로그램이 Windows Azure 저장소를 사용하도록 할 수도 있습니다. SQL Database 및 Windows Azure 저장소에 대한 보다 자세한 정보를 원하신다면, Data Storage Offerings on Windows Azure를 참조하시기 바랍니다.
데이터 모델을 위한 클래스 생성
이번 강좌에서는 응용 프로그램을 위한 데이터베이스 스키마를 생성하는데 있어 Entity 프레임워크의 Code First 기능을 사용할 것입니다. Code First 기능은 Entity 프레임워크가 데이터베이스 및 테이블을 자동으로 구성하는 데 필요한 일반적인 클래스를 작성할 수 있게 합니다. 쉽게 말해서, DB 설계보다 코드를 먼저 작성하고 코드에 따라 DB가 생성되는 것이죠. 이것이 Entity 프레임워크의 Code First 기능입니다.
- Solution Explorer 에서 마우스 오른쪽 버튼을 클릭하여 Models 폴더를 선택한 다음, Add를 클릭하고 Class를 클릭합니다.
- Add New Item 대화상자에서, Name 필드에 ToDoModels.cs라고 적고, Add를 클릭합니다.
-
ToDoModels.cs 파일의 내용을 아래의 코드로 변경합니다. 이 코드는 데이터베이스 테이블과 매핑될 여러분의 ToDoItem 클래스의 구조를 정의하고 있습니다. 또한, ToDoItem 클래스에 대해 작업을 수행하는 데이터베이스 컨텍스트 클래스도 생성하고 있습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace ToDoListApp.Models
{
public class ToDoItem
{
public int ToDoItemId { get; set; }
public string Name { get; set; }
public bool IsComplete { get; set; }
}
public class ToDoDb : DbContext
{
public DbSet<ToDoItem> ToDoItemEntries { get; set; }
}
}
Entity 프레임워크가 ToDoItem 이라는 테이블과 데이터베이스를 생성하기 위해 필요한 것은 이것이 전부입니다.
- 프로젝트를 빌드하기 위해서 Solution Explorer 안에 있는 ToDoListApp 프로젝트에서 오른쪽 마우스 버튼을 클릭하고 Build를 클릭합니다.
To-do List 항목을 생성/조회/수정/삭제하기 위해 스캐폴딩 생성
ASP.NET MVC는 데이터베이스 작업을 수행하는 응용 프로그램을 쉽게 구축할 수 있게 해 줍니다. 스캐폴딩 기능은 생성, 조회, 변경, 삭제 액션을 수행하기 위해서 앞서 만든 모델과 데이터 컨텍스트를 사용하는 코드를 대신 생성해 줍니다.
- Solution Explorer에서 Controllers 위에서 마우스 오른쪽 버튼을 클릭하여 Add를 클릭합니다. 그리고 Controller를 클릭합니다.
Add Controller 창에서 컨트롤러 이름으로 HomeController를 입력하고, Controller with read/write actions and views, using Entity Framework 템플릿을 선택합니다. 스캐폴딩은 Model과 데이터 Context를 사용하는 코드를 생성하기에 그들을 지정해 줄 필요가 있습니다. 모델 클래스로는 ToDoItem을 선택하고, 데이터 컨텍스트 클래스로는 ToDoDb를 선택합니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-27.png
- Add를 클릭합니다.
여러분은 HomeController.cs가 이미 존재한다는 메시지를 보게 될 것입니다. Overwrite HomeController.cs 및 Overwrite associated views 체크박스를 둘 다 선택하시고, OK를 클릭하세요.
Visual Studio는 ToDoItem 객체에 대해 각각 4개의 데이터베이스 작업(생성, 조회, 수정, 삭제)을 수행하는 컨트롤러 및 뷰를 생성합니다.
- Solution Explorer 에서 ToDoListApp 프로젝트 루트 디렉터리의 Web.config 파일을 엽니다.
<configuration> / <connectionStrings>항목에 아래의 ToDoDb 연결 문자열을 추가합니다.
<add name="ToDoDb"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=ToDoDb;User Instance=true;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />
Visual Studio에서 에뮬레이터로 로컬 응용 프로그램을 실행하기 위해서 CTRL-F5를 누르세요. 응용 프로그램이 처음 실행되면, Code First는 Windows Azure SDK와 함께 설치된 로컬 SQL Server Express 인스턴스에 데이터베이스를 생성합니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-28.png
- 웹 페이지의 Create New 링크를 클릭하면 새로운 데이터베이스 항목을 생성하는 화면이 브라우저에 나타납니다.
SQL 데이터베이스 설정하기
- 다음 단계는 응용 프로그램이 데이터를 클라우드에 저장할 수 있도록 구성하는 것입니다. 우선, SQL 데이터베이스 서버를 생성합니다. 이를 위해서 Windows Azure Management Portal 에 로그온하고, 왼쪽의 네비게이션 패널에서 SQL Databases를 클릭합니다.
패널의 중간에서 Create a SQL Database 를 클릭합니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-29.png
데이터베이스의 이름으로 ToDoListDB를 기입하고, 서버로는 New SQL Database server를 선택합니다. 다른 필드들은 기본값으로 두어도 됩니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-31.png
로그인 이름과 암호를 정합니다.
Note: 이는 관리자 계정에 대한 크레덴셜이며, 서버의 모든 데이터베이스에 대해 모든 권한을 부여하는 것입니다.
여러분에게서 가장 가까운 호스팅 데이터 센터 지역을 선택하세요. 그래야 성능도 더욱 좋을테니까요(한국에 계시면서 미국을 선택한다면 후회할만한 속도를 경험하시겠죠 ^^)
Allow Windows Azure services to access the server 는 체크된 상태로 남겨두세요.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/newcloudservice100.png
- 체크모양의 버튼을 클릭해서 데이터베이스 생성을 마무리 하세요.
- 그 다음, 새로 생성된 서버에 대해 외부 연결을 허용하도록 방화벽 설정을 변경해야 합니다.
여러분이 생성한 서버를 클릭하면 오른쪽에 흰색 화살표가 보입니다. 그 화살표를 클릭하여 서버 페이지를 열도록 하세요.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice101.png
서버 페이지에서 Configure를 클릭하여 방화벽 설정 및 규칙 설정을 아래와 같이 하세요:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice102.png
- 현재 클라이언트 IP를 복사하세요. 이 IP 주소는 여러분의 라우터나 프록시 서버에서 수신하는 IP 주소가 됩니다. SQL 데이터베이스는 현재 연결에서 사용하는 IP 주소를 감지하여 이 장치로부터의 연결 요청을 받아 들이도록 방화벽 규칙을 만듭니다.
- IP 주소를 시작과 종료 범위에 붙여 넣으세요. 나중에, 범위가 너무 적어서 연결 오류가 발생한다면 이 범위를 넓게 수정하면 됩니다.
- 방화벽 이름을 입력하세요. 예를 들면, ToDoListDevRule라고 말이죠.
- 체크 표시를 클릭하여 규칙을 저장합니다.
규칙을 저장하고 나면, 아래의 스크린샷과 비슷한 페이지를 보게 될 것입니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice103.png
페이지 하단의 Save를 눌러서 단계를 완료하세요. 만약 Save 버튼이 보이지 않으면 브라우저를 새로고침 하시면 됩니다.
중요 : SQL 데이터베이스의 서버 측 방화벽을 구성해야 할 뿐만 아니라, 클라이언트 측이 TCP 포트 1433을 통한 아웃바운드 TCP 연결을 허용하도록 구성해야 합니다. 더욱 자세한 정보는 Security Guidelines for SQL Database 를 참조하세요
Visual Studio로 돌아가기 전에, 여러분은 정규화 된 서버의 이름을 기억해 둘 필요가 있습니다. 정규화 된 서버의 도메인 이름은 아래의 형식을 따릅니다:
<서버명>.database.windows.net
<서버명>은 서버를 식별하기 위한 것입니다. 서버 이름을 적어 두세요. 나중에 필요합니다.
여러분은 SQL Server Management Studio 또는 Windows Azure 관리 포탈을 사용하여 SQL 데이터베이스 인스턴스를 관리할 수 있습니다. SQL Server Management Studio에서 SQL 데이터베이스에 접속하려면 위에서 적어둔 정규화 된 서버의 도메인 이름 즉, <서버명>.database.windows.net 으로 접속하면 됩니다.
데이터베이스를 사용하도록 응용 프로그램을 설정
일반적으로 운영 환경에서는 로컬에서 사용했던 것과는 다른 데이터베이스를 사용하게 될 겁니다. Visual Studio는 이러한 작업을 쉽게 할 수 있도록 해 줍니다. 여러분은 Web.Release.config 파일 내 변환을 통해서 개발 서버와 클라우드 배포 간의 Web.config 파일이 다르게 적용되도록 할 수 있습니다. 아래의 절차는 Web.Release.config 파일을 수정하여 응용 프로그램이 클라우드에 배포될 때 로컬 데이터베이스 대신에 클라우드의 SQL 데이터베이스를 사용하게 합니다.
Visual Studio 또는 Visual Web Developer의 Solution Explorer 에서 ToDoListApp 프로젝트 루트의 Web.config 파일 아래에 위치한 Web.Release.config 파일을 엽니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-33.png
<configuration> 및 <connectionStrings> 항목의 연결 문자열들을 지우고, 아래의 연결 문자열을 넣습니다. <serverName> 자리는 여러분이 생성한 서버의 이름으로 대체하시면 됩니다. 또한 <user> 및 <password>는 앞에서 생성한 관리용 사용자 및 암호를 입력하시면 됩니다.
<connectionStrings>
<add name="ToDoDb"
connectionString="data source=<serverName>.database.windows.net;
Initial Catalog=ToDoDb;User ID=<user>@<serverName>;Password=<password>;Encrypt=true;
Trusted_Connection=false;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)" />
<add name="DefaultConnection"
connectionString="data source=<serverName>.database.windows.net;Initial Catalog=ToDoDb;
User ID=<user>@<serverName>;Password=<password>;Encrypt=true;
Trusted_Connection=false;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)" />
</connectionStrings>
노트: 관리 사용자는 서버의 모든 데이터베이스를 접근할 수 있습니다. 더 제한된 권한을 가진 사용자를 생성 하려면, Adding Users to Your SQL Database Instance 안의 절차를 따르도록 하세요. 그리고 Web.Release.config 안의 연결 문자열에 설정된 관리 계정 대신에 새로 생성한 사용자 이름과 암호로 수정하세요.
클라우드에서 응용 프로그램 실행하기
이제, 마지막 단계로 응용 프로그램이 클라우드 환경에서 데이터베이스에 접근하는 것을 테스트하기 위해서 다시 배포를 합니다.
배포 프로파일이 올바로 선택되어 있는지 확인하고, Publish를 클릭하세요. 특히, 빌드 구성이 Release로 설정되어 있는지 확인하세요. Visual Studio는 그에 따라 앞에서 편집한 Web.Release.Config 파일에서 SQL 데이터베이스 연결 문자열을 선택합니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-21.png
Publish를 클릭하면, Visual Studio는 처음에 배포했던 때 보다 더 빠르게 업데이트를 수행합니다.
배포가 완료되면 배포 모니터 창에서 응용 프로그램의 URL을 엽니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice-24.png
예상대로 응용 프로그램의 기능이 동작하는지 확인 합니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-37.png

출처 : http://www.windowsazure.com/media/devcenter/dotnet/dev-net-getting-started-38.png
- 이제 응용 프로그램은 완전히 클라우드에서 동작하게 됩니다. 이 응용 프로그램은 데이터를 저장하는 데 SQL 데이터베이스(즉, SQL Azure)를 사용하며, 작은(Small) 규모의 Web Role 인스턴스로 동작합니다. 클라우드 환경이 일반적인 웹 호스팅 환경보다 좋은 장점 중의 하나는 동적으로 규모를 변경할 필요가 있을 경우 인스턴스의 수를 확장할 수 있다는 점입니다. 이렇게 바꾸기 위해서 응용 프로그램을 변경할 필요는 없습니다. 또한, 업데이트 중에도 항상 사용자의 요청을 처리하는 Role이 존재할 수 있기 때문에 서비스의 중단 없이 업데이트 배포가 가능합니다.
응용 프로그램의 중단 및 삭제
응용 프로그램을 배포한 후에, 여러분은 무료 시간인 750시간/월(31일/월) 이내에 다른 응용프로그램을 빌드하고 배포하기 위해서 기존 것을 제거하고자 할 수도 있습니다.
Windows Azure는 Web Role 인스턴스의 서버 소비 시간당 과금을 합니다. 서버 시간은 여러분이 응용 프로그램을 배포하면 소모되며, 인스턴스들이 실행되지 않고 정지 상태에 있더라도 비용이 소모되는 것은 마찬가지 입니다. 무료 계정은 이런 Web Role 인스턴스를 호스팅하기 위한 750시간/월(31일/월)의 독립된 가상서버 시간을 포함하고 있습니다.
아래의 단계는 어떻게 여러분의 응용 프로그램을 중단하고 삭제하는지 제시합니다.
Windows Azure Management Portal에 로그온 하고 Cloud Services를 클릭한 후에 여러분의 응용 프로그램을 클릭합니다:

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice106.png
대시보드 하단에서 Stop을 클릭하여 응용 프로그램을 임시로 중단 시킵니다. 물론, 원한다면 Start를 클릭하여 다시 실행시킬 수도 있습니다. 반면, Delete를 클릭하면 응용 프로그램을 Windows Azure에서 복구 불가능하도록 완벽하게 제거할 수 있습니다.

출처 : http://www.windowsazure.com/media/devcenter/dotnet/cloudservice107.png
다음 단계
이번 강좌에서는 웹 응용 프로그램을 생성 및 배포하여 Windows Azure 클라우드 서비스에 호스팅하고 SQL 데이터베이스에 데이터를 저장하도록 만드는 방법에 대해 배웠습니다. 다음으로 학습할만한 내용으로는 다음의 컬럼들을 추천합니다.