Azure Cloud로 은는이가 서버 개발하기

이미지 출처: networkencyclopedia.com

1. Azure App Service

은는이가 서버는 HTTP 형식의 API 요청에 응답하는 Web Application이다. 이 웹앱을 Azure App Service에 호스트를 하면 프런트엔드가 손쉽게 요청을 할 수 있게 된다. 개발을 할 때에는 공짜로 쓸 수 있는 F1 인스턴스를 사용하였고, 베타 테스팅의 경우에만 한 달에 $51의 S1 인스턴스로 업그레이드하였다. 사용하는 인스턴스에 여러 앱을 호스트 할 수 있어서, Production과 Dev버전의 웹앱을 똑같은 인스턴스를 사용해 비용을 절감할 수 있었다.

App Service가 제공하는 다양한 인스턴스

2. Azure SQL Database

은는이가 데이터는 Azure SQL Database으로 관리한다. 처음에는 경험이 없는 Document DB를 도전해보고 싶어서 Azure Cosmos DB으로 시작하였는데 가격이 감당이 안 됐다. 각 Table마다 월 $16를 내야 하는데, 처음에는 2개였던 Table이 나중에 기능이 서서히 추가돼 하나씩 늘어나기 시작했다. 할 수 없이 Table 개수와는 상관없이 전체 퍼포먼스로 가격을 책정하는 Azure SQL로 바꾸었다. 앱의 Data layer를 다 뜯어고쳐야 하는 큰 공사였다. Azure Table Storage라는 서비스를 사용할까 고민도 했었는데, 다큐멘테이션을 훑어보니 금방 deprecate 될 것 같다는 쎄-한 느낌이 와서 바로 노선을 바꾸었다.

은는이가의 SQL Database. 테이블이 처음보다 훨씬 많아졌다.

3. Azure Functions

프런트엔드는 어플 사용자의 요청만 전달한다. 은는이가 서비스에는 글이 개봉되는 시간에 사용자한테 노티를 보내고 다른 사람들의 글을 읽을 수 있게끔 해야 하는데, 이는 사용자의 요청이 아니라 벡엔드가 자체적으로 요청해야 하는 것이다.

4. Azure Application Insights

개발을 할 때는 테스트 케이스를 써서 원하는 기능들 잘 동작하는지 확인을 하였지만, 실제 베타 테스팅을 할 때는 어떤 버그가 나타날지 모른다. Azure Application Insights는 나의 앱이 잘 돌아가는지 모니터를 할 수 있는 서비스이다. 우선 나의 웹앱이 application insights로 사용하도록 설정을 하면 로그들이 다음과 같이 기록된다.

  • traces: ASP.NET Core에서 사용되는 Logger<T>를 통한 로그들이 기록된다.
  • requests: incoming http request에 대한 정보가 기록된다 (e.g. response code, duration).
  • exceptions: 앱 안에서 던져지는 exception이 기록된다.
  • Response code가 500 이상일 경우
  • Traces에 level ≤ 3 로그가 발견된 경우 (Critical, Error, Warning)
  • 사용자에게 노티를 보내는 게 실패한 경우
  • Any exceptions within the app
  • Top 10 slowest request every day (그냥 궁금해서)

5. Azure Keyvault

앱을 안전하게 만들려면 여러 가지 secret을 관리해야 한다. 예를 들어 프런트엔드가 요청할 때 사용하는 api-key라는 시크릿, 데이터베이스와 연결할 때 사용하는 Connection String이라는 시크릿, 사용자가 안전하게 로그인할 수 있는 token를 발급할 때는 signing key라는 시크릿이 필요하다. 이것들은 숨겨진 장소에서 관리해야 한다는 점이 까다로운데 Azure Keyvault를 사용하면 간단하게 관리할 수 있다. Version control이 굉장히 잘 돼있어서 secret이 노출돼도 rotate 하면 된다. 가격은 $0.03 per 10,000 transaction으로 거의 공짜라고 생각하면 된다. $3을 내야 하는 Certificate Rotation만 조심하자.

상단 왼쪽에 있는 New Version를 누르면 바로 새로운 시크릿을 생성할 수 있다.

--

--

Software Engineer @ Microsoft Azure Compute — To be or not to be. That's not really a question.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Sean D Kim

Sean D Kim

Software Engineer @ Microsoft Azure Compute — To be or not to be. That's not really a question.