AppHarbor 로 .NET Application 테스트/서비스하기

아오 썅 AppHarbor 쓰는 한국인들 없나? 닷넷이 이렇게 죽었어? 엉? 구글 검색으로도 안나와 어떻게 된게.

그래서 내가 열받아서 쓴다. 참고로 AppHarbor 는 웹 어플리케이션 및 백그라운드 어플리케이션 (걍 콘솔)을 지원한다.

여기서는 웹 어플리케이션을 만들고, 올리고, 보여주는 식으로 강좌를 올리겠다.

AppHarborHeroku 의 .NET 버전이라고 보면 된다고 한다. (어느 외쿡님이)

AppHarbor 는 PaaS 서비스로, 어플리케이션을 올려서 서비스 한다고 보면 되며, 야는 .NET 만 지원한다.

.NET 버전은 csproj 파일에 있는 버전으로 알아채기 때문에 버전이 어떤 거든 상관은 없는데 최신 기술인 4.5 도 지원된다고 한다.

일단 .NET 클라우드 플랫폼에서 웹 서비스만 할거라면.. 무료다. 표를 통해 확인해봅세.

구분 

Azure 웹 무료

 AppHarbor 무료

 앱 개수

사이트 10개

제한 없음

 사이트 개수

 1

1

 저장소 용량

1GB (사이트 공유 총용량)

딱히 없는듯

 트래픽 제한

 일 165MB

월 100GB (작은 Worker) 

 사용자 지정 도메인

지원 안함

추가 요금 (제한없이 10$/월)

 SSL

지원 안함

기본 SSL 지원, 개별 별도 요금

 DB

MSSQL 전용 20MB 제공

 확장을 통해 무료 MSSQL 공유 20MB

MySQL 및 MongoDB도 있음.

 협업

불가능 (웹 게시 방식)

Git 를 통해 가능

 비고

 90일 무료 체험 가입해야함

그냥 가입하고 쓰면 됨

구분 

Azure 웹 서비스 표준

AppHarbor CATAMARAN

월 가격 (최소 인프라)

75$

49$

사이트 개수

100

1

 인스턴스 개수

 10

2

 사용자 지정 도메인

 지원

지원

 SSL

 별도 추가 요금

지원

 DB

 마찬가지이며 추가시 별도과금

마찬가지이며 추가시 별도과금

 협업

 불가 (웹 게시 방식)

Git 를 통해 가능

 저장소

10GB (사이트 공유 총용량)

 제한 없음

요금제 분석

 작은 여러 사이트 운영시 유리한 요금

큰 단일 사이트 운영시 유리한 요금

딱히 놓고 보면 AppHarbor 가 가격 면에서 비싸보인다. (솔직히 비싼것 같다.) 하지만 무료 환경이 좋다. 그래서 소개하는 것이다.

유료 요금제 분석 내가 가격과 스펙을 봤을 때 아무래도 이렇게 쓸 때 좋겠다는 주관적 입장일 뿐이며, 자세한 사항은 직접 가서 비교하기 바란다.

AppHarbor 는 Worker Scale 에 자세한 스펙을 표시하지 않았다. 그래서 한번 찾아봤더니 다음과 같이 나온다.

One worker is currently limited to roughly 50% of an AWS Elastic
Compute Unit (ECU) which is equivalent to 500-600 MHz. The worker
is allowed to consume up to 512MB of RAM (soft limit) and there’s a
1GB hard RAM limit. You might also want to check out the limits
section of our program policy which
specifies other limits of interest.

Limits

AppHarbor has soft and hard limits for the use of its services. Hard
limits are automatically enforced and soft limits are consumable
resources that you agree not to exceed.

  • Network Bandwidth per Worker Unit: 100GB/month – Soft
  • Shared DB processing: Max 200msec per second CPU time – Soft
  • Request timeout: 30 seconds – Soft; 120 seconds – Hard
  • RAM usage per Worker Unit: 512 MB – Hard (if you only have a single
    worker unit per worker the limit is: 512MB – Soft; 1024MB – Hard).
    Workers are restarted/recycled when exceeding this value).
  • CPU resources per Worker Unit: ~600MHz – Hard
  • Requests Queue limit per Worker Unit: 500 Requests – Hard

Worker 하나당 500MHz, 반기가헤르츠의 처리 속도와 512기가의 RAM을 제공받는다고 보면 된다. (물론 기본 Worker 당 스케일 늘리면 당연히 늘어나겠지만)

그리고 트래픽 100기가, 공유 DB의 경우 처리 속도가 200밀리초 미만, 최대 요청 시간 30포, 500개의 요청 대기를 지원한다.

그리고 RAM 의 경우 허용 크기를 넘어버리면 Worker 가 다시 시작된다. 사이트를 다시 시작한다는 뜻이다. 그렇게 되면 세션같은 메모리에 적재된 데이터는 날라간다. 무분별하게 메모리 내에 객체를 담는 것은 지양해야 할 것이다.

하지만 이정도 사양이면 사이트 테스트및 개인 연습 사이트 운영 등에 지장이 없다. 대국민 서비스는 젭알.

자. 이제 AppHarbor 로 어플리케이션을 어떻게 배포하는지 알려주도록 하겠다.

필자는 Nancy 로 만든 ASP.NET 웹 프로젝트를 만들었다. ASP.NET MVC 써도 되고 걍 ASP.NET 써도 되고

여의치 않는 사용자는 WebMatrix 로 만든 웹 사이트도 가능하다.

비주얼 스튜디오에서 웹개발 하는 사람이라면 알겠지만, 폴더 단위 프로젝트가 웹 사이트며, WebMatrix 는 웹 사이트 프로젝트만 지원하기 때문에 sln 파일이 따로 없다. 없어도 된다. 그래서 AppHarbor 에 올릴 때 솔루션 파일 (sln)이 없으면 웹 사이트 프로젝트로 취급되어 빌드되고 실행된다.

프로젝트 개수에 상관없이 sln 파일이 있고, 그 하위에 프로젝트 있는 구조로 올리면 된다.

어떤 프로젝트는 sln 이 별도 폴더에 있고 실제 프로젝트는 다른 경로에 있는데 그렇게 하면 잘못 판단하여 빌드 안되므로 유의.

즉, 이렇게 하라는 거다. 올바른 앱 폴더 구조는 다음과 같다.

AppHarbor_Test (앱 최상위 폴더)

└ Project1 (클래스 라이브러리 폴더)

└ ASPNETMVC (웹 프로젝트 폴더)

└ MyApp.sln (솔루션 파일)

또는

AppHarbor_Test (앱 최상위 폴더)

└ App_Data (폴더)

└ Index.aspx (페이지 파일)

└ Global.asax (웹 설정)

└ MyClass.cs (임의 클래스)

└ Web.config (웹 설정)

└ MyApp.csproj (프로젝트 파일)

└ MyApp.sln (솔루션 파일)

아래와 같은 앱 폴더 구조는 올바르지 않다. (웹사이트로 인식되어 올바르게 사이트 뜨지 않는다)

AppHarbor_Test (앱 최상위 폴더)

└ Sln (솔루션 폴더)

    └ MyApp.sln (솔루션 파일)

└ Project1 (클래스 라이브러리 폴더)

└ ASPNETMVC (웹 프로젝트 폴더)

<

p>

이렇게 해서 프로젝트를 만들거나, 기존 웹 되는 프로젝트를 먼저 준비한다.

그리고 아래 프로그램이 있어야 한다.

  • Git for Windows (Github for Windows 는 Github 연동일 때만 해당) (필수)
  • TortoiseGit 또는 Git Extensions (마우스 클릭으로 하고 싶으면 설치, 콘솔로 하겠다면 비설치)
  • Git Source Control Provider for VS2012 (있으면 편하고 없어도 무방)

Git 쓰는 방법은 귀찮아서 패스. 구글 검색하면 흔하디 흔하게 나온다.

AppHarbor 가입하는 방법은 간단하다. 메인 페이지에서 GET STARTED NOT 버튼을 클릭하여 이메일, 아이디, 비번 세가지만 쓰면 된다. 그럼 인증메일이 오는데 인증메일 링크를 클릭하고 로긴하면 가입절차가 끝난다.

그러면 Create New Application 나오는데, 원하는 이름을 입력하고, 서버 위치 선택 후 만들면 된다.

서버 위치가 미국, 유럽, 미국베타가 있는데 걍 미국 선택 후 만든다.

그런 다음, 왼쪽 메뉴 하단에 REPOSITORY URL 버튼이 보일 것이다. 클릭하면 URL이 복사된다.

Git 원격 URL을 복사된 URL로 쓰면 된다.

특이한 점은 비밀키 생성된 파일을 요구하지 않고, 비밀번호만 요구할 것이다. 원체 윈도우다 보니 HTTPS 프로토콜만 제공하나보다. 물론 비밀키파일 생성하고 원격에 등록하면 매번 비번 입력하는 귀차니즘 없이 쓸 수는 있는데.. 안타깝소.

그리고 메뉴에 Hostnames 가보면 생성된 URL이 뜨는데 이게 당신이 만든 웹 사이트를 접근할 URL 이다.

안타깝게도 사용자 지정 도메인은 유료이기 때문에 운영할 맘이 없다면 그냥 기본 제공 도메인을 쓰도록 한다.

다음으로, DB를 쓰도록 하자. AppHarbor 사이트 위에 대메뉴에서 Add-ons 가면 되는데, MySQL, PostgreSQL, MSSQL 등의 SQL DB가 지원되고, MongoDB, Redis, CouchDB 등의 No-SQL 디스크 기반 또는 메모리 DB를 사용할 수 있다.

무료 플랜도 찾아보면 나오며, 테스트로 쓸수 있고, 경우에 따라 원격 접속도 가능하여 확인도 가능하다.

MSSQL 쓰려면 맨 아래로 스크롤 이동하면 나오는데, Yocto 가 무료다. 공유된 SQL 환경에서 20MB 무료로 제공한다.

주저없이 테스트 해주자. 당신의 컴터에 매니지먼트 스튜디오 등의 DB 클라이언트 있으면 거기서도 접속 가능하므로 참고.

composite / 2013년 10월 7일 / 미분류
태그:, , , , , , , , , , , ,

Comments

  1. NJHouse - 2015년 4월 23일 @ 9:00 오전

    안녕하세요. 글을 보고 Appharbor 사용 시도를 해보고 있습니다.

    그런데 혹시 Web API 는 지원을 하지 않는건가요?

    Microsoft (R) ASP.NET Compilation Tool version 4.0.30319.33440

    Utility to precompile an ASP.NET application

    Copyright (C) Microsoft Corporation. All rights reserved.

    /global.asax(1): error ASPPARSE: Could not load type ‘AuthServer.WebApiApplication’.

    ….

    이런 에러가 발생하네요.

    Reply
    • composite - 2015년 4월 27일 @ 10:43 오전

      Nuget 이용시 상속구조 체크하시고 명시적으로 WebAPI 상속 추가하세요.

      AppHarbor는 .NET 기본환경 외에 아무것도 없으니

      Nuget 으로 추가하던 직접 DLL 추가하던 명시적으로 추가하세요.

      이건 애저로 운영해도 마찬가집니다.

      Reply

답글 남기기

Your email address will not be published / Required fields are marked *