본문 바로가기

WEB

[AWS] ASP.NET 애플리케이션 게시 방법

AWS EC2와 RDS를 이용해 ASP.NET MVC 애플리케이션 게시하기

 

개인 프로젝트를 진행하며 실제 사용까지 이어지기 위해 AWS 에서 환경을 구축했다. 일반 국내 웹호스팅, AWS, Azure 등 여러 방법이 많았는데 왜 AWS 선택하였는지, 그리고 AWS 어떤 구성으로 .NET 애플리케이션을 게시했는지 그 과정을 담아 본다.

 

.NET Core를 사용해보고 싶었는데 이번에는 익숙한 .Netframework 로 해보고 조만간 .NET Core로 다시 하는 걸로..  AWS 프리티어를 생성해 진행하며 EC2와 RDS를 이용하였다.

 

 

  • AWS(Amazon Web Services) -  아마존닷컴의 클라우드 컴퓨팅 플랫폼 서비스
  • EC2(Amazon Elastic Compute Cloud) -  클라우드 환경에서 컴퓨터를 제공하는 웹 서비스로 클라우드 환경에 띄운 가상 서버
  • RDS(Amazon Relational Database) - 클라우드 환경에 띄운 가상 관계형 데이터 베이스

 

 

ASP.NET 애플리케이션 게시를 위한 AWS 환경 구축 단계

  1. AWS 프리티어 무료 계정 생성
    - 12개월 무료
    - 프리티어 관련 AWS 참고 링크
  2. Amazon EC2 Windows 인스턴스 생성 및 인스턴스에 IIS, Web Deploy 설치 + 인바운드 규칙 편집
    - 프리티어 12개월 무료 해당
    - .NET 애플리케이션 게시 상세 참고 링크
  3. Elastic IP 생성 후 EC2 인스턴스 연결
    - 고정 퍼블릭 IP 주소 할당
  4. Amazon RDS MSSQL 서버 생성
    - 프리티어 12개월 무료 해당
    - 데이터베이스 생성시 옵션에서 데이터 정렬 설정 필요. (기본 설정으로 만들면 한글 데이터 깨짐)
    - 데이터베이스 생성 및 연결 참고 링크
    - 참고2 링크

 

 

AWS 프리티어란?

AWS는 제품따라 인스턴스 유형따라 가격이 천차만별이라..  AWS는 프리티어 기능을 제공한다. 프리티어(FreeTier)는 고객에게 서비스별로 지정된 한도 내에서 무료로 AWS 서비스를 살펴보고 사용해 볼 수 있는 기능이다. 즉, 무료체험!

 

 

프리티어라고 해서 무조건 무료는 아니다. 프리티어는 정해진 인스턴스 유형을 사용해야 무료이다. AWS EC2 인스턴스 생성 과정에서 내가 맘에 드는 유형을 선택했다가는 요금이 발생할 수 있으니.. 꼭 프리티어 유형으로 제대로 선택합니다.  나는.. 생성했다가 잘못 생성한 것을 알고 바로 삭제했는데도 1시간 요금 발생하여 1달러 정도 청구되어 결제했다. 무료체험인데 무서운 무료체험이다.. 아래는 1시간 요금 청구서. 잘못 생성한것을 바로 인지 못했다면 요금 폭탄 맞았을거다.

 

 

 

프리티어 이용시 EC2, RDS는 어떤 인스턴스 유형을 선택해야 하나?

Amazon EC2는 Windwos t2.micro 를 , Amazon RDS는 db.t2.micro 인스턴스 유형을 선택하여 구성하면 된다. 다른 유형을 선택하면 요금 발생하니 유형 아래 프리티어 사용 가능 이라 표시된 유형을 선택하면 빠르다.

 

 

 

EC2 Windwos 인스턴스에 IIS, WebDeploy 설치

EC2 에서 .NET 애플케이션 게시 후 IIS 를 이용해 서비스 하기에 IIS 설치가 필요하다. 

 

  • [서버 관리자] - [대쉬보드] - [역할 및 기능 추가] 마법사에서
  • [설치 유형 선택] - [역할 기반 또는 기능 기반 설치] 를 선택한 후
  • [서버 역할 선택] - [웹 서버(IIS)]를 선택
  • [기능 선택] 화면에서 [.NET Framwork 기능] 선택
  • [웹서버] - [HTTP 기능] 서비스 모두 선택

이외에도 서비스 선택이 많으니, AWS에서 제공하는 AWS 자습서를 참고하여 진행한다. (위에 링크 참고)

 

 

 

EC2 인스턴스 인바운드 규칙 편집

Elastic IP 를 생성하고 인스턴스를 연결했음에도 게시한 사이트나 생성한 RDS MSSQL 에 접속이 되지 않는다면 인바운드 규칙을 편집한다. 미리 사용할 포트를 생각하고서 인스턴스 생성하며 보안그룹에 대해 규칙을 설정하는 것이 가장 편리하다. 나는 웹사이트 80 포트, FTP 21 포트, 원격 3389 포트를 설정했다. 

 

 

 

ASP.NET 애플리케이션인데 AWS를 선택한 이유??

  • AWS를 사용해 보고 싶었다. 업무에서 클라우드를 이용하지 않아서 업무에서는 기회가 없어서 개인 프로젝트 하며 선택했다.
  • 1년 무료 프리티어 제공과 1년뒤 좀더 저렴한 요금. Azure도 프리티어를 제공하지만 1년후를 생각했으면 요금을 비교하니 Azure가 더 비싸게 계산되었다.
  • 참고자료가 많다. 처음 접하는 사용자가 제공해주는 자습서로도 충분히 시작할 수 있다. (Azure 또한 자료는 잘 되어있다.) 

내가 처음 AWS 접했을시기랑 지금을 비교하면 서울 리전도 생겼고 아마존에서 제공하는 자습서 자료도 좋고 인터넷에 자료도 많기에 충분히 무리없이 진행할 수 있는 수준이다. 지금은 일주일정도 사용중인데 아직 장단점을 파악하기에는 부족한 기간이지만 아무래도 무료이다보니 성능이 떨어지는 부분이 조금씩 느껴진다. 게시할때는 체감은 별로 없는데 사이트 접속시 편차가 있는 것 같다. 이부분은 현재 프로젝트가 진행중이기에 1년 프리티어란 좋은 기회로 AWS 장단점을 파악해야겠다. 단지 걱정되는 점은 요금폭탄..! 이점만 조심하여 잘 관리하며 콘솔도 익숙해지도록 자주 사용해야겠다.