Saturday Azure Live, Season 1 발표 자료 모음집

Saturday Azure Live, Season 1 발표 자료 모음집

참고: 이 문서의 원본은 https://www.facebook.com/notes/194798083895702/ 입니다.

1706: 2017-06-10

  1. 세션 1: Azure Active Directory on Windows 10 & Office 365 Enterprise 발표 자료
  2. 세션 2: Azure 리소스 위협 예방 및 대응 발표 자료
  3. 세션 3: 소규모 웹 시스템 10분 안에 구축하기 발표 자료

1705: 2017-05-13

  1. 세션 1: 게임 뒤에 서버 있어요 (소규모 게임 개발팀에서 서버 운영하는 이야기) 발표 자료 세션 동영상
  2. 세션 2: Azure를 이용한 네이티브 PC게임 서비스 발표 자료 세션 동영상
  3. 세션 3: 이번 달의 Azure 업데이트 – BUILD 2017 발표 자료 세션 동영상

Global Azure Bootcamp x Korea 2017

  1. 행사 소개 + Xamarin 스폰서 세션 + 공지 사항, 남정현(Azure 한국 사용자 그룹 운영진, Azure MVP) 발표 자료: https://docs.com/jeong-hyun-nam/119… 실황 영상: https://youtu.be/PmxsVGoqWwY
  2. 구름 위의 IDC, IaaS 알아보기, 김세준 (Azure 한국 사용자 그룹 운영진, Azure MVP) 발표 자료: https://doc.co/ENCswq 핸즈온랩: https://github.com/krazure/hands-on… 실황 영상: https://youtu.be/IhitFbEijtg
  3. Docker, Azure Container 그리고 Webapp on Linux
    1. 이진석 (AskDjango 운영자, Azure MVP) 발표 자료: https://drive.google.com/file/d/0B9… 실황 영상: https://youtu.be/qCakADGEmAc
    2. 남정현 (Azure 한국 사용자 그룹 운영진, Azure MVP) 발표 자료: https://docs.com/jeong-hyun-nam/841… 따라하기 영상: https://www.youtube.com/watch?v=dyH… 실황 영상: https://youtu.be/e3B7C-AKh9M
  4. Azure Appservice로 서비스 탄탄하게 관리하기, 김영재 (Azure 한국 사용자 그룹 운영진, Azure MVP, (주)바풀 CTO) 발표 자료: https://doc.co/c7REb6 실황 영상: https://youtu.be/fkgo8a4EO0s

1703: 2017-03-11

  • 장소: 토즈 선릉점 ( 서울특별시 강남구 테헤란로70길 14-8 세왕개발빌딩 )
  • 행사페이지, 후기
  1. 무엇이 무엇이 닮았을까? OpenStack과 Azure, 최영락 (한국 OpenStack 사용자 그룹 회장) https://www.slideshare.net/ianychoi…
  2. Web App on Linux 에 Python/Django 배포하기, 이진석 (AskDjango 운영자) https://drive.google.com/open?id=0B… https://www.facebook.com/askdjango/… https://nomade.kr/vod/deploy/86/
  3. ASP.NET Core와 Angular 2 시작하기 (Getting Started with ASP.NET Core and Angular2), Syed Shanu (Visual Studio Dev. & Tech. MVP) https://github.com/syedshanu/ASPNET… https://github.com/syedshanu/ASPNET… http://shanucsharp.blogspot.kr/p/as…

1702: 2017-02-18

  • 장소: 토즈 강남2호점 ( 서울시 서초구 강남대로 459 백암빌딩 3층 )
  • 행사페이지, 후기
  1. Azure와 C#으로 만드는 모바일 서비스, 김종인 (DesignMe 대표) https://docs.com/jongin-lee/3214
  2. Event Sourcing on Azure, 이규원 (ENVICASE) https://docs.com/gyuwon/3602/micros…
  3. 공연 스타트업에서의 Azure 사용기 by 1인 개발자, 김홍민 (트리거스) https://docs.com/user472581/1277
  4. Azure Microservice 를 위한 API Management with Functions, 주민규 (리커시브소프트) https://docs.com/mingyu-ju/9664/azu… https://github.com/CodingSta/AzureI…

1701: 2017-01-14

  • 장소: 토즈 강남점( 서울특별시 서초구 서초대로77길 23 승원빌딩 3층)
  • 행사페이지, 후기
  1. Microsoft Conversation as a Service 소개, 오일석 (한국 마이크로소프트) https://docs.com/il-seok-oh-1/7489/…
  2. Azure WebApp 개념원리, 김영재 (바풀) https://docs.com/youngjae/8818/satu…
  3. DevOps와 Hybrid Cloud, 김세준 (Azure 한국사용자그룹운영진) https://docs.com/user100920/9473/17…

1611: 2016-11-12

  • 장소: 토즈 강남2호점 ( 서울시 서초구 강남대로 459 백암빌딩 3층 )
  • 행사페이지
  1. 개발자 관점에서의 Azure 플랫폼 오버뷰, 남정현 (메이크어스) https://docs.com/jeong-hyun-nam/843…
  2. 인프라 관점에서의 Azure 플랫폼 오버뷰, 김세준 (Azure 한국사용자그룹운영진) https://docs.com/user100920/9390/16…
  3. Azure 플랫폼과 클라우드 보안, 김호광 (메이크어스) https://docs.com/kimhokwang/1930

Saturday Azure Live 1706 행사 후기

Saturday Azure Live 1706 행사 후기

안녕하세요. Azure 한국 사용자 그룹의 운영진으로 활동하는 남정현입니다.

Saturday Azure Live 1706, Season 1 Final 행사에 참석해주신 모든 분들께 감사드립니다. 이번 행사를 마지막으로 7월과 8월은 쉬고, 9월부터 Saturday Azure Live Season 2를 시작합니다.


발표 자료 및 행사 실황 공유

이번 행사는 IT Pro 및 엔지니어 특집으로 진행되었습니다.

  • 세션 1 “Azure Active Directory on Windows 10 & Office 365 Enterprise”
  • 세션 2 “Azure 리소스 위협 예방 및 대응”
  • 세션 3 “소규모 웹 시스템 10분 안에 구축하기”

설문지 응답 및 청중 세션 평가

설문에 응해주신 분들께 다시 한 번 깊은 감사를 드립니다.

  • 이번 Saturday Azure Live 행사 만족도 (복수 선택 가능)
    • 만족스럽지 않았다: 1명
    • 대체적으로 괜찮았다: 3명
    • 다음에 다시 오겠다: 10명
  • 세션 1 “Azure Active Directory on Windows 10 & Office 365 Enterprise” 평가
    • 만족한다: 11명
    • 어려웠다: 1명
    • 생각과 다르다: 1명
    • 의견
      • 중간에 와서 보지 못했습니다.
      • 데모 관련된 Tip이 많이 있어 좋았습니다.
      • Azure Active Directory에 대해서 이해가 잘 되었습니다.
      • Linux나 타 Cloud와의 연동 여부를 더 알고 싶네요.
      • 역시 하드웨어 명가 MS의 기술력이란…
      • 감사합니다.
  • 세션 2 “Azure 리소스 위협 예방 및 대응” 평가
    • 만족한다: 12명
    • 생각과 다르다: 1명
    • 의견
      • 재미있는 강의 감사합니다.
      • 보안에 대해 잘 알 수 있게 되었습니다.
      • 3rd Party 솔루션에 대해 더 알고 싶어요.
      • DDoS에 대한 내용도 알려주세요. ^^
      • 감사합니다.
  • 세션 3 “소규모 웹 시스템 10분 안에 구축하기” 평가
    • 만족한다: 12명
    • 생각과 다르다: 1명
    • 의견
      • 갖은 고생한 흔적이 보이는 알찬 강의 내용이었습니다.
      • 구체적인 사례와 예시가 좋았어요.
      • Azure 서비스의 기본 네트워크에 대해서 이해가 잘 되었습니다. 감사합니다.
      • VM을 수없이 생성하며 고생하신 것이 느껴집니다. ㅠ
      • 감사합니다.
      • 덕분에 재미나게 실습할 수 있을것 같네요.
  • Saturday Azure Live Session 1의 구성과 내용에 대한 의견
    • 분위기도 좋고 좋은 정보 얻어갑니다.
    • Azure의 다양한 서비스에 대해서 잘 알게 되었습니다. 감사합니다.
    • 만족합니다.
    • 처음 왔는데 내용과 구성이 너무 좋았습니다.
    • 고생하셨습니다.
  • 다음 Saturday Azure Live 행사에 바라는 점 또는 건의 사항
    • 오전에 하면 좋을 것 같습니다.
    • Cloud-Native Application 개발 방법론을 알고 싶습니다.

소중한 의견을 주신 청중 여러분들께 다시 한 번 감사의 인사를 드립니다. 보내주신 피드백은 최대한 검토하여 다음 세미나 및 기획에 반영하도록 하겠습니다.


출석 체크 결과

총 27명께서 신청하여 주셨고, 당일 출석하신 분은 명단 상에 계신 15분과 명단에 안계신 3분을 포함하여 총 18분이 출석하셨습니다. 이번 행사에도 No-Show 비율이 50%에 근접하게 되어 매우 안타깝습니다.

행사를 준비하는 사람들, 행사에 참석하시는 분들 모두에게 시간은 동등하며 소중합니다. No-Show가 왜 문제가 되는지 지속적으로 말씀을 드렸습니다만 전혀 개선되지 않고 있어 매우 유감스럽습니다.

이에 따라 Season 2 부터는 오늘 행사를 포함하여 꾸준히 출석하시는 분들께 개근상 제도를 운영할 예정입니다. 반면, No-Show 횟수를 셈 하여 횟수와 빈도가 높으신 분들에게는 향후 행사 접수 시 소정의 소명 절차를 요구하게 될 수 있음을 양해하여 주시기 바랍니다. No-Show 기록을 피하시려면 반드시 참석 취소 기능을 이용하여, 다른 분들께서 참석하실 수 있도록 배려하여 주시기 바랍니다.

아울러 행사 참석 전에는 반드시 온오프믹스를 통하여 정확하게 행사에 참석하여 주셨는지 다시 한번 확인 부탁드립니다. 참석 신청을 하지 않으신 경우 개근상 제도에서 불이익을 받거나, 장소가 때에 따라 협소한 경우에도 문제가 될 수 있습니다.

고맙습니다. 모두들 즐거운 여름 휴가 보내시고, 시원한 가을에 다시 뵙겠습니다!

Saturday Azure Live 1705 행사 후기

Saturday Azure Live 1705 행사 후기

안녕하세요 Azure 한국 사용자 그룹의 운영진으로 활동하는 남정현 입니다.

Saturday Azure Live 1705에 궂은 날씨와 비교적 홍보가 부족했음에도 참석해주신 청중 여러분들께 감사드립니다.


발표 자료 및 행사 실황 공유

이번 행사는 게임 개발자 특집으로 진행되었습니다.


설문지 응답 및 청중 세션 평가

설문에 응해주신 분들 께 다시 한번 깊은 감사 드립니다.

  • 이번 Saturday Azure Live 행사 만족도 (복수 선택 가능)
    • 대체적으로 괜찮았다. : 1
    • 다음에 다시 오겠다. : 3
    • 의견
      • 간단한 실습도 같이 진행하면 좋겠습니다. 감사합니다.
  • 세션 1 “게임 뒤에 서버 있어요 (소규모 게임 개발팀에서 서버 운영하는 이야기)”의 평가
    • 만족한다 : 4
    • 의견
      • 소규모/중간규모 게임 개발 업계의 현황 및 전반적인 게임 서버 개발에 대해서 이해가 되었습니다. 감사합니다.
      • 순순디자인 화이팅!
      • 웬디 개발 힘내세요!
      • Wendy 잘 쓰겠습니다.
  • 세션 2 “Azure를 이용한 네이티브 PC 게임 서비스”의 평가
    • 만족한다 : 4
    • 의견
      • MMOG의 Latency의 중요선 및 스트리밍 게임 서버에 대해서 알 수 있었습니다.
      • 게임 데모가 실시간 가능했으면 좋았을 텐데 토즈 와이파이가 좋지 않아 아쉽네요.
  • 세션 3 “이번달의 Azure Update – BUILD 2017″의 평가
    • 생각과 다르다 : 1
    • 만족한다 : 3
    • 의견
      • Build 2017의 다양한 내용을 알 수 있어서 좋았습니다. JetBrain의 Rider를 알게되서 감사합니다.
      • 내용 잘 보았습니다.
  • Azure 체험 및 자유 실습 시간에 대한 평가
    • 만족한다: 3
    • 기타: 1

소중한 의견을 주신 많은 분들께 다시 한번 감사의 말씀을 올려드립니다.
보내주신 피드백은 최대한 검토하여 다음 세미나 및 기획에 반영하도록 하겠습니다.


행사 회고

연휴 기간, 대선, 그리고 본격적인 결혼 시즌의 도래 등 행사를 모객하기에 상당히 어려운 시기이고, Global Azure Bootcamp 이후로 적절한 세미나 홍보 타이밍을 잡지 못하여 짧은 시간 동안 모객을 할 수 밖에 없었던 점이 많이 아쉬웠던 행사입니다. 다음 1706 행사를 마지막으로 Saturday Azure Live는 그간 달려온 6개월간의 여정을 마치고 두 달 간 방학 기간을 거칠 예정입니다.

오늘 소소한 규모로 진행된 행사에 발걸음 해주신 청중 여러분들께 깊은 감사를 드립니다. 다음번 행사에는 부족함 없이 더 완벽하게 준비할 수 있도록 하겠습니다.

고맙습니다!

 

Global Azure Bootcamp x Korea 2017 행사 후기 [실황 영상 업데이트]

Global Azure Bootcamp x Korea 2017 행사 후기 [실황 영상 업데이트]

안녕하세요 Azure 한국 사용자 그룹의 운영진으로 활동하는 김세준 입니다.

4월 22일에 열린 Global Global Azure Bootcamp x Korea 2017에 대한 행사 후기 입니다.

이번에 정말 많은 분들이 참가해 주셔서 매우 감사드리며, 앞으로 더 좋은 행사로 보답해 드리도록 열심히 노력하겠습니다.

 


발표 자료 및 행사 실황 공유

 


설문지 응답 및 청중 세션 평가

  • 이번 Global Azure Bootcamp 행사는 어떠셨습니까? (복수 선택 가능)
    • 만족스럽지 않았다: 1표
    • 대체적으로 괜찮았다: 26표
    • 다음에 다시 오겠다: 34표
    • 의견
      • 정말 도움이 많이되었습니다. 처음 Azure를 사용하는데도 이해가 잘 되었습니다. 다만 시간이 더 길어서 충분히 따라갈 수 있었으면 더 좋았을 것 같습니다. 앞으로도 추가로 심화내용을 더다뤘으면 하는 바람이 있습니다.
  • 세션 1 “구름 위의 IDC, IaaS 알아보기”의 내용은 어떠셨습니까?
    • 생각과 다르다: 2명
    • 어려웠다: 7명
    • 만족한다: 46명
    • 의견
      • 따라할 수 있는 자료가 있어서 좋았습니다.
      • 깃헙에 온라인으로 매뉴얼을 올려주어 고맙습니다.
      • 좋은 정보 감사합니다.
      • 초반에 너무 빠르게 진행하셨습니다.
      • 알차게 하나하나 과정을 git에 올려주신게 감동이었습니다.
      • Step by Step
      • Azure 강의 내용 유익했습니다.
      • 설명 속도가 빨라요.
      • 진행이 빠릅니다.
      • 시간 내에 수행 가능한 간단한 세션 구성이었다면 좀 더 좋았을 것 같습니다.
      • 좋았습니다.
      • 조금만 더 천천히 진행해주셨으면 좋겠습니다.
      • 내용 자체가 길다보니 제한된 시간 내에 스피드하게 진행될 수 밖에 없었던 것 같습니다.
      • 빨라요.
      • 감사합니다.
      • 진행이 조금 빠른듯하여 아쉬웠지만 전반적인 Azure IaaS를 볼 수 있어 좋았습니다.
      • 특장점을 좀 더 구체적으로 알려주시면 좋았을 것 같습니다.
      • 재미있었습니다.
      • Azure 서비스에 대해서 차근차근 잘 알게 되었습니다. 감사합니다.
      • Thank you.
      • 내용이 좋았는데 빨라서 아쉽습니다.
      • Azure에 대해 알기 쉬워서 좋았습니다.
      • Public Key Copy를 어느 부분까지 해야 하는지를 몰라서 어려움을 겪었습니다.
  • 세션 2 “Docker, Azure Container 그리고 WebApp on Linux”의 내용은 어떠셨습니까?
    • 생각과 다르다: 4명
    • 어려웠다: 9명
    • 만족한다: 42명
    • 의견
      • 빨라요.
      • 자료 감사합니다.
      • 핸즈온랩은 조금만 다루고 구조만 알려줘도 될 것 같습니다.
      • 만족하지만 시간이 너무 부족해서 빨랐던 것 같습니다.
      • 좋은 주제였습니다.
      • 조금 빨라서 쫓아가기 어려웠어요.
      • 구성이 어렵더라도 윈도우 앱 기반 Lab도 만들어 주셨으면.
      • 시간이 더 있었으면! 더 오래 해주세요.
      • Docker 공부를 더 열심히 해야겠어요. ㅠㅠ
      • 감사합니다.
      • 영상 위주 진행이 아쉬웠어요.
      • Django: 초심자를 위해서 준비를 잘 해주셔서 감사합니다. / ACS: 가장 듣고 싶었던 세션인데 아쉽습니다.
      • DC/OS에 대해서 말씀주셨는데, 질문 주셨듯이 왜 MS Container인지 말씀주셨으면 좋았을 것 같습니다.
      • DC/OS 데모가 인상적이었습니다.
      • DC/OS 부분은 놀라웠습니다. 저도 설치해서 테스트해보고 싶습니다.
      • Thank you. 동영상으로 진행해서 실습이 안되었어요.
      • 시간이 조금 부족했던 것 같습니다.
      • Docker를 몰라 살짝 어려웠습니다.
      • 실습과 강의가 분리되어야 할 것 같습니다. 실습도 시간이 더 필요합니다.,
  • 세션 3 “Azure AppService로 서비스 탄탄하게 관리하기”의 내용은 어떠셨습니까?
    • 생각과 다르다: 2명
    • 어려웠다: 7명
    • 만족한다: 43명
    • 의견
      • 못 따라 가겠어요.
      • 내용 잘 들었습니다.
      • 타 클라우드와 비교우위점도 알았으면 좋겠습니다.
      • 이해가 쏙쏙되게 완전 잘 설명해주셨습니다. Azure 과외를 받고 싶습니다.
      • 부트캠프라…
      • 감사합니다.
      • 실 운영자의 발표가 내용이 와닿았습니다. 시간이 좀 부족해서 아쉬웠습니다.
      • 실 서비스에 사용된 예제를 보여줘서 좋았습니다.
      • Logic App을 정말 간편하게 이용할 수 있었던 것 같습니다.
      • Thank you.
      • 알차고 재미있는 구성이었습니다.
      • 실 서비스 예시가 있어 좋았습니다.
      • 내용이 너무 많아 따라가기 어려웠습니다.
  • 이번 Global Azure Bootcamp의 실습 환경과 내용은 어떠셨습니까?
    • 생각과 다르다: 2명
    • 어려웠다: 7명
    • 만족한다: 46명
    • 경품에 대한 의견
      • 경품이 다양해서 좋았습니다.
      • 좋아요.
      • 책 많이 주셨으면 좋겠습니다.
      • 유용한 책자 고맙습니다.
      • 좋습니다.
      • 못받아서 아쉽네요. 책을 주시는것은 좋은 것 같습니다.
      • 좋아요.
      • 초보 개발자용 서적이 많은 것 같습니다.
      • 항상 많은 경품을 나눠주시고 준비해주시는데 감사드리며, 친절하셔서 더 좋았습니다.
      • 책 잘받았습니다.
      • 감사합니다.
      • Thank you.
      • 좋습니다.
      • 경품이 좋았습니다.
      • 책들이 특히 좋았습니다.
  • 다음 Global Azure Bootcamp 행사에 바라는 점 또는 건의 사항을 기재하여 주십시오.
    • 재미있었습니다.
    • 스크린이 잘 안보이고, 전기부족으로 노트북 쓸 수 없어서 아쉬웠습니다.
    • HOL 진행 시 마이크 사용이 적절치 않아보입니다.
    • DC/OS 어렵네요.
    • 실제 사이트가 돌아가는 환경을 보여줬으면 좋겠습니다.
    • 수고하셨습니다.
    • Azure에 대한 건의 사항입니다. Azure Portal의 속도 향상 가능할지 문의드립니다. 너무 무거운것 같아요. 수고 많으셨습니다.
    • 감사합니다.
    • 인터넷이 너무 느립니다.
    • 자주 열어주세요.
    • 수고 많으셨습니다.
    • 실습 시간이 빡빡할 수 있으니 시간을 조금 늘렸으면 좋겠습니다.
    • 강의와 소개가 많고 질의 응답 시간이 너무 없어서 아쉽습니다.
    • 전반적으로 좋았습니다. 감사합니다.
    • 경쟁사 대비 Azure만의 차별적인 장점에 대한 소개가 있었으면 좋겠습니다.
    • Hands-on은 줄여도 되겠습니다. 소개 위주로 빨리 진행하는 것이 더 좋을 것 같습니다.
    • 실습 방법을 github에 올려주셔서 감사합니다. 앞으로 더 많아지면 좋겠습니다.
    • Thank you. 진행이 빨랐어요.
    • 실습 내용 자체는 어렵지 않은 것 같은데 글자가 작고 실습 속도가 조금 빨라서 세션 전에 자료를 주시고 조금만 천천히 진행해주시면 더 좋알 것 같습니다.
    • 가능하다면 세션 당 시간이 조금 더 길어서 더 많은 내용을 알고 갈 수 있으면 더 좋을 것 같습니다. 오늘 행사 잘 듣고 갑니다. 좋은 행사 감사드립니다.
    • 인터넷이 너무 느렸어요.
    • 시간이 부족해서 발표자님들이 준비한 내용들을 다하지 못한것에 대한 아쉬움이 있습니다.
    • 너무 재미있고 도움이 많이 되었습니다.
    • 행사 준비하신 분들 감사합니다. 4월 행사 기억에 남을것 같습니다.
    • Wi-fi가 아쉬웠습니다.
    • 노트북 충전이 어려웠습니다.
    • 기본 자료 정보가 미리 주어 졌으면 좋겠습니다.

 


행사 회고

이번과 같은 실습 환경의 세미나는 모든 발표자 분들께서 처음 하시는 부분이어서 미숙했던 점들이 많았던 것 같습니다. 특히 청중의 실습 시간을 고려하지 않은 시간 배분과, 발표 내용 준비에서 너무 많은 양을 짧은 시간 안에 소화해 내려고 노력하여 발생했던 문제가 아니었을까 합니다.

그래도 다행이라고 생각하는 것은 Azurepass가 $100이 지급되었고, 한달 간 체험해 볼 수 있는 환경이 되었기에, 더욱 의미 있었다고 생각되며, 제가 Github에 날밤 새면서 온라인 실습 자료를 만든 것이 다행이었다고 생각합니다. 앞으로도 다양한 실습 자료와 시나리오를 기반으로 한 온라인 실습 자료는 계속해서 만들 예정이오니 저희 git repository에 많은 관심 부탁드립니다!

실제로 직접 실습하는 방법도 필요한 것 같고, 개념적으로 설명하는 방법도 필요한 것 같아서 여태까지 기획만 잡고 있었습니다만,  스터디 그룹과 같은 형태로 실습하는 환경을 제공함으로써 직접 사용할 수 있는 환경을 만들고, 기존의 Saturday Azure Live! 를 통하여 개념적 내용을 설명하는 자리를 만들어 보도록 하겠습니다.

설문 조사에 응해주신 모든 분들께 매우 감사드리며, 하나하나의 소중한 의견들을 최대한 반영하도록 노력하겠습니다. 이번 행사에 참석해 주신 모든 분들께도 감사 드리며, 한 분 한 분 인사를 못 드린 점도 아쉬운 부분으로 남습니다.

더 좋은 행사, 더 의미 있는 행사, 무언가 얻어 가실 수 있는 행사가 되도록 앞으로 더욱 노력하는 Azure 한국 사용자 그룹이 되도록 노력하겠습니다.

긴 글 읽어주셔서 감사합니다 🙂

Visual Studio로 Azure Function 개발하기 [업데이트]

Visual Studio로 Azure Function 개발하기 [업데이트]

Azure Function은 Azure App Service에 포함된 기능 중 하나인 Azure Web Job을 별도의 상품으로 분리하여 출시한 서비스입니다. 하지만 아쉽게도 Visual Studio의 풍부한 IDE 지원을 아직까지도 직접 받을 수 있는 상태는 아닙니다. 또한 Microsoft Docs 등에 공개된 방법도 간접적으로 Azure Function의 설정을 이용한다거나, Node용 CLI를 활용하는 정도에서 언급되는 것이 전부입니다.

소개하려는 내용은 Visual Studio의 콘솔 프로젝트와 Azure Storage Emulator를 이용하여 C# Azure Function을 C# Script가 아닌 통상적인 C# Compiler 기반 프로젝트로 개발과 테스트를 진행하고, 이것을 C# Azure Function으로 마이그레이션하는 방법에 관한 것입니다. 만약 LINQPAD Premium Version을 구입하여 사용 중이라면, 같은 작업을 LINQPAD에서도 실행할 수 있으니 더 적극적으로 Azure Function을 개발하실 수 있을 것입니다.

시작하기

Azure Web Job 기반이기 때문에, 기존에 .NET용으로 출시한 Web Job SDK와 각종 Extension을 Azure Function 사이에는 어느 정도 호환성이 있습니다. 다시 말해서 C# 스크립트로 무언가 새로운 코드를 작성한다기 보다, 기존의 SDK를 C# 스크립트에서 사용할 수 있도록 포장한 것이 Azure Function의 본질에 가깝습니다. 아쉽게도 완전히 같은 코드 베이스는 아니지만, 호환성이 있기 때문에 취할 수 있는 이점이 있고, 그 부분을 활용하는 것입니다.

시작을 위하여 다음의 소프트웨어 스택이 설치되어있는지 점검합니다.

  • Azure Storage Emulator (Azure Cloud Service SDK에 포함되어있습니다.)
  • Visual Studio 2015 Community Edition 이상의 IDE
  • .NET Framework 4.6 이상

만약 Windows 개발 환경이 아닌 경우 Azure Storage Emulator는 제공되지 않기 때문에 어쩔 수 없이 실제 Azure Storage 계정을 만들어 연결해야 합니다. IDE의 경우 Visual Studio Code, Visual Studio for Mac, 또는 Rider를 대신 활용할 수 있습니다. 그리고 Mono를 설치하여 개발을 진행할 수 있습니다. 아쉽게도 .NET Core는 2017년 4월 현재 지원되지 않습니다.

선호하는 IDE로 콘솔 프로젝트를 만든 다음, 다음의 NuGet 패키지들을 설치합니다.

  • Microsoft.Azure.WebJobs (2.0.0 이상)
  • Microsoft.Azure.WebJobs.Extensions (2.0.0 이상)

그 다음 Main 메서드를 다음과 같이 코딩합니다.

var jobHostConfig = new JobHostConfiguration("UseDevelopmentStorage=true");
jobHostConfig.UseCore();
jobHostConfig.UseFiles();
jobHostConfig.UseTimers();
jobHostConfig.UseDevelopmentSettings();

using (var cts = new CancellationTokenSource())
using (var jobHost = new JobHost(jobHostConfig))
{
    jobHost.StartAsync(cts.Token);
    Console.WriteLine("Press Ctrl + C to stop the service.");
    Console.CancelKeyPress += (s, e) => cts.Cancel();
    cts.Token.WaitHandle.WaitOne(Timeout.Infinite);
}

Local Azure Storage Emulator를 사용할 수 있는 Windows 환경에서만 UseDevelopmentStorage=true 연결 문자열을 지정하고, 그 외 환경에서는 실제 Azure Storage Account의 연결 문자열을 해당 속성 블레이드에서 찾아 대입해야 합니다.

그리고 Azure Function에 호스팅하려는 함수를 다음과 같이 코딩합니다.

public static void Run(
    [TimerTrigger("* * * * * *", UseMonitor = true)]
    TimerInfo myTimer,
    TraceWriter log)
{
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}

TimerTrigger가 TimerInfo 메서드 인자에 지정되는 것에 유의하여 위와 같이 코딩합니다. TimerTrigger에 지정되는 첫 인자는 타이머의 실행 간격을 나타냅니다. Crontab에 사용되는 반복 간격 표시 문법을 참조하여 값을 지정하도록 구성하는 것이 Azure Function으로 마이그레이션 할 때 편리하므로 해당 문법을 익히는 것을 권장합니다.

그리고 실행이 잘 되는지 확인하기 위하여, Azure Storage Emulator를 시작하고, F5 키를 눌러 샘플 프로그램을 실행합니다. 다음과 비슷하게 출력되면 정상적으로 실행되는 것입니다.

Press Ctrl + C to stop the service.
Development settings applied
Found the following functions:
TimerSample.Run
Singleton lock acquired (1ce1ebaf1e584866b90488a9e1b5d19f/TimerSample.Run.Listener)
The next 5 occurrences of the schedule will be:
2017-04-24 오전 12:16:59
2017-04-24 오전 12:17:00
2017-04-24 오전 12:17:01
2017-04-24 오전 12:17:02
2017-04-24 오전 12:17:03
Job host started
Executing 'TimerSample.Run' (Reason='Timer fired at 2017-04-24T00:16:59.0273081+09:00', Id=aa02dc0a-5a89-4ebd-bf08-8182cce53a0c)
C# Timer trigger function executed at: 2017-04-24 오전 12:16:59
Executed 'TimerSample.Run' (Succeeded, Id=aa02dc0a-5a89-4ebd-bf08-8182cce53a0c)
Executing 'TimerSample.Run' (Reason='Timer fired at 2017-04-24T00:17:00.0061625+09:00', Id=f8161e5d-c989-4d2d-9a49-cb5d9d269134)
C# Timer trigger function executed at: 2017-04-24 오전 12:17:00
Executed 'TimerSample.Run' (Succeeded, Id=f8161e5d-c989-4d2d-9a49-cb5d9d269134)
...

마이그레이션

이렇게 만들어진 Azure Function이 정말 잘 수행되는지 점검할 때 활용할 수 있는 유용한 서비스가 하나 있습니다. Try Azure App Service를 이용하면 실제 Microsoft Azure 구독과 무관하게, Microsoft 계정 이외에도 Google (GMAIL), Facebook, Github 계정으로 로그인하여 1시간짜리 테스트 Azure Function 계정을 발급받을 수 있습니다.

https://azure.microsoft.com/ko-kr/try/app-service/ 에 방문하여 새로운 계정을 하나 생성합니다.

그 다음, 위의 Run 메서드의 코드를 복사합니다. 단, 몇 가지 복사 전에 수정하거나 확인해야 할 부분이 있습니다.

  • 개발 중에 참조한 NuGet 패키지의 참조를 지정해야 합니다. project.json 파일은 기본적으로 만들어지지 않으므로 다음과 같은 뼈대를 만들고, 현재 개발한 프로젝트 내의 package.config 파일의 내용을 여기로 복사해서 넣어야 합니다. 종속 관계에 따라 자동으로 설치되는 패키지들은 제외하고, 실제로 추가했던 패키지만 지정해서 넣으면 됩니다.
{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.ProjectOxford.Face": "1.1.0"
      }
    }
   }
}
  • NuGet 패키지가 아닌 BCL 내 어셈블리 또는 개별 .NET DLL 파일을 참조했을 경우에는 C# 스크립트만의 고유 문법인 #r 지시자를 사용하여 참조를 지정합니다.
    • GAC에 설치했거나 별도로 수동 참조한 .NET DLL 파일은 bin 폴더로 직접 업로드해야 합니다.
    • x86용으로 명시하여 빌드한 DLL이거나, 설치 준비 및 사용 과정에서 시스템 레지스트리 변경 등의 작업이 필요한 경우에는 사용할 수 없습니다.
  • 함수를 옮겨 담기 전에는 메서드 이름과 시그니처가 처음 Azure Function을 만들었을 때와 동일한지 점검합니다. 만약 정상적으로 실행되지 않는다면 function.json 파일의 내용을 참고합니다.
{
  "disabled": false,
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 */5 * * * *"
    }
  ]
}
  • 마지막으로 앞에서 TimerTrigger나 BlobTrigger, 혹은 ServiceBusTrigger와 같이 트리거에 지정한 인자의 값을 확인하여 function.json 파일을 수정하도록 합니다. 위의 예제의 경우 매 초 마다 실행되도록 하였으므로, function.json의 schedule 프로퍼티를 “* * * * * *”으로 바꾸어야 합니다.

마무리

이렇게 해서 만들어진 최종 버전의 CSX 파일을 실제 Azure Function 서비스로 배포하는 것은 자유롭게 할 수 있습니다. 연속성 있는 개발을 위해서, 버전 관리 저장소를 통하여 배포하도록 설정해두면 더욱 편리할 것입니다.

이 글을 작성하면서 좀 더 고민해볼 만한 주제가 있다면, 아래와 같은 부분들이 있을 것 같습니다.

  • HTTP Trigger, Web Hook Trigger는 Web Job과 사실 직접적인 상관이 없으며, ASP.NET Web API의 서브셋에 가깝습니다. 다만 TraceWriter 클래스를 사용하는 부분만이 온전히 Web Job에 관련이 있는 부분입니다. 이 부분을 감안하여 DummyTraceWriter 클래스를 만들어 단위 테스트를 하도록 할 수 있을 듯 합니다.
class DummyTraceWriter : TraceWriter
{
    public DummyTraceWriter() : base(default(TraceLevel)) { }
    public override void Trace(TraceEvent traceEvent) => Console.WriteLine(traceEvent);
}
  • LINQPAD용 스크립트 템플릿을 만들어 공유한다면 정식 SDK가 출시되기 전에 더 많이 Azure Function을 개발하고 테스트할 수 있을 것이라고 생각합니다.
  • 일부 네이티브 코드를 포함하는 NuGet 패키지는 아마도 64비트용으로 빌드된 패키지를 사용하는 것이 실행에 문제가 없을 것으로 예상합니다. 32비트 버전의 패키지도 별도 EXE 파일로 실행하는 경우에는 Windows-on-Windows 호환성 기능으로 실행은 보장될 수 있을 것입니다.

HTTP 트리거에 대한 보충

HTTP 트리거는 Function에서만 존재하는 고유한 기능으로 기존 Web Job 기반의 개발 방식과는 차이가 있습니다. HTTP 요청을 수신 대기하고 있다가, HTTP 응답을 되돌려주는 출력 기능으로 제공됩니다. 아쉽게도, HTTP 응답으로 내보내는 출력만을 지원하고 있고, 2017년 5월 현재 독립적으로 다른 곳에서 Web Invocation을 호출하는 출력은 지원하지 않습니다.

제가 이 아티클에서 소개한 방법은 Azure의 여러 컴포넌트에 연계하여 Function을 간접적으로 호출하는 트리거 방식의 로컬 개발에 대해 다룬 것입니다.

만약 Web Job의 형태가 아니라 직접 호출할 수 있는 HTTP 트리거 기반의 개발을 필요로 하시는 경우, 유정협 님의 아티클을 참조하시어 ASP.NET 웹 프로젝트로 Azure Function App을 개발하고 Function App에 퍼블리싱하는 방법을 택하는 것을 권장합니다.

자세한 내용은 http://blog.aliencube.org/ko/2017/04/30/precompiled-azure-functions-revisited/ 페이지를 참조하여 주십시오.

더 세부적인 사항, 보충할 부분, 혹은 수정해야 할 부분에 대한 의견을 주시면 큰 도움이 될 것 같습니다.

 

Azure에서 NAS (SMB, CIFS) 사용하기

Azure에서 NAS (SMB, CIFS) 사용하기

Azure의 초창기부터 제공되어오던 핵심 서비스 중에서 저장소가 있습니다. 저장소는 Amazon Web Service 등과 마찬가지로 BLOB 저장소, 큐 저장소, 테이블 저장소로 구성되어있습니다. Azure 가상 컴퓨터는 VHD 파일을 BLOB 저장소 상에 만들어 가상 컴퓨터를 부팅하고 실행 중 일어나는 데이터 읽기와 쓰기 작업을 BLOB 저장소 상의 VHD 파일과 동기화합니다.

높은 수준의 가용성을 보장받고, CDN 과의 연동 등을 생각하면 BLOB 저장소를 이용하여 파일을 관리하는 것은 여러모로 이상적입니다. 하지만 모든 경우에 대해 사용 가능한 옵션이 아니고, 기존에 SMB (CIFS) 형태로 개발해서 사용해왔던 온 프레미스 애플리케이션들은 이런 방법을 사용할 경우 완전히 애플리케이션을 새로 개발해야 하기 때문에 적절한 선택지가 되기 어렵습니다.

지금 소개해드릴 방법은 SMB (CIFS) 형태의 저장소를 사용하는 기존 애플리케이션을 손쉽게 Azure로 마이그레이션할 수 있는 방법입니다.

Azure 파일 저장소의 이해

Azure 파일 저장소는 BLOB 저장소와 다른 개념을 가지고 있습니다. BLOB 저장소는 “컨테이너”라고 불리는 파티션 안에 많은 갯수의 파일을 저장할 수 있으며, 파일의 이름에 경로 구분 문자인 ‘/’를 지정할 수 있어 Prefix Match 방식으로 계층적인 접근을 다룰 수 있었습니다. 그리고 모든 입출력은 HTTP 프로토콜만을 사용한다는 것이 특징이었습니다.

반면 파일 저장소는 “공유”라고 불리는 파티션을 할당하며, 이 파티션 내에 전통적인 파일 시스템의 디렉터리와 파일을 저장할 수 있습니다. 하나의 공유를 만들게 되면 최대 크기를 지정하게 되며, Azure 저장소 이름을 사용자 ID, 기본 액세스 키를 비밀 번호로 하는 계정이 자동으로 부여됩니다.

Azure 파일 저장소가 도입되기 이전에 이와 같은 컨셉을 구현하기 위해서는 Azure VM을 만들고, 추가 디스크를 부착한 다음, VM 간의 가상 네트워크를 만드는 등의 추가 절차를 거쳐 SMB (CIFS) 공유를 형성할 수 있었습니다. 하지만 설명에서도 대강 열거되어있듯이 많은 리소스를 투여해서 복잡하게 구성해야 했기 때문에 시간, 확장성, 경제적인 면에서 모두 비효율적이었습니다.

하지만 Azure 파일 저장소가 정식으로 릴리스됨에 따라 별도의 추가 VM이나 가상 네트워크 구성 없이 더 확실하고 견고하면서도 직관적인 SMB (CIFS) 서비스를 사용할 수 있게 되었습니다. Azure File Storage가 제공하는 SMB 버전은 SMB 2.1 및 3.0 입니다.

무엇이 더 좋아지는가?

Azure 파일 저장소를 사용하면 다음의 이점이 있습니다.

적어도 LRS (로컬 중복 저장)와 GRS (지역 중복 저장) 복제 정책 중 하나의 혜택을 볼 수 있어 장애 대응에 탁월한 선택지가 될 수 있습니다. 최소 수준으로 LRS만을 택하더라도 세 벌 이상의 복제본이 동시에 관리되며, GRS는 LRS를 기반으로 지역 내 데이터센터간 비동기 복제도 같이 겸하게 됩니다.
이 부분에 대한 자세한 내용은 https://azure.microsoft.com/ko-kr/documentation/articles/storage-redundancy/ 페이지를 참고하시면 좋습니다.

관리 도구와 웹 API를 활용하여 파일 저장소 상에 파일을 다운로드하거나 업로드하거나 관리할 수 있습니다.

Cloudberry Azure Storage Explorer 등의 서드 파티 도구를 사용하면 VM 밖에서도 편리하게 웹 API를 사용하여 파일을 업로드하거나 다운로드할 수 있습니다.

다만 파일 공유의 특성 상 VM 내에서 파일을 열고 있어 잠기는 경우 웹 API에도 동일한 상황이 나타나게 됩니다. 동시성에 민감하다면 이 부분은 주의를 요합니다.

ISP가 TCP/445 아웃바운드 연결을 차단하지 않는다는 전제 하에 (혹은 Azure 데이터센터로 VPN 연결을 만든 다음에) 클라우드 외부에서 SMB (CIFS) 방식으로 직접 접근하는 것도 가능합니다.
리눅스 VM에서도 파일 저장소를 사용할 수 있습니다.

이 부분에 대한 자세한 내용은 https://azure.microsoft.com/ko-kr/documentation/articles/storage-how-to-use-files-linux/ 페이지를 참고하시면 좋습니다.

Azure 파일 저장소를 실제로 사용해보기

Windows 가상 컴퓨터를 기준으로 Azure 파일 저장소를 실제로 사용해보도록 하겠습니다.

1단계: 저장소 계정과 공유 만들기

portal.azure.com으로 이동하여 저장소 계정을 새로 만들거나 기존 저장소 계정에 대한 블레이드를 다음과 같이 열고, 액세스 키 메뉴를 클릭합니다.

그 다음 저장소 계정 이름과 KEY 1의 값을 잘 기록해둡니다. 이이서 서비스 섹션의 파일 버튼을 클릭합니다.

도구 모음의 공유 추가 버튼을 누르면 새 공유 볼륨을 만들 수 있습니다. 적절한 이름과 크기를 지정하면 새로운 공유 볼륨이 만들어집니다.

2단계: VM에서 공유 폴더 접근 테스트하기

1단계에서 메모한 정보를 참고하여 접속을 테스트합니다.

  • 파일 저장소의 경로는 \<저장소 계정 이름>.file.core.windows.net<공유 이름> 으로 바꿉니다.
  • 접속 시 사용자 ID는 <저장소 계정 이름>을 사용합니다.
  • 접속 시 사용자 비밀 번호는 <KEY 1의 값>을 사용합니다.

그러면 VM 내에서 다음과 같이 폴더 창을 열고 파일 입출력을 테스트해볼 수 있습니다.

3단계: 사용자 계정을 추가하고 서비스 등에 연결하기

파일 저장소에 접근이 잘 되는 것을 확인하였다면 Windows 사용자 계정을 만들어 서비스 등의 시작 계정으로 지정하면 편리하게 사용할 수 있습니다. 예를 들어, IIS 연결 계정으로 지정하기 위해서는 아래와 같이 작업할 수 있습니다.

IIS 응용프로그램 풀 설정에서 시스템에서 생성한 Windows 계정과 연결되도록 설정을 바꿉니다. 고급 설정의 프로세스 모델 그룹 내의 ID 속성을 변경해야 합니다. 비밀 번호는 IIS의 내부 데이터베이스에 암호화되어 별도로 저장되므로 한 번 더 입력이 필요합니다.

IIS 디렉터리 연결 계정 설정은 응용프로그램 풀과 별개로 IIS 프로세스가 누구의 권한을 사용하여 디렉터리와 파일을 대행 서비스할 것인지를 결정하기 위하여 사용됩니다. 콘텐츠 디렉터리가 NAS 위에 있다면 당연히 BLOB 저장소 계정이 연결되어 합니다.

정리

운영 중인 레거시 애플리케이션을 Azure 기반으로 마이그레이션하게 된다면, 여러 가지 고려 사항이 있을 수 있겠지만, 그 중에서 스토리지에 관한 부분은 다음과 같이 정리할 수 있습니다.

  • 파일 저장소의 경로는 \<저장소 계정 이름>.file.core.windows.net<공유 이름> 으로 바꿉니다.
  • 접속 시 사용자 ID는 <저장소 계정 이름>을 사용합니다.
  • 접속 시 사용자 비밀 번호는 <KEY 1의 값>을 사용합니다.
  • IIS나 NT 서비스 등에서 사용하기 위한 Windows 계정을 만들고 새로 지정합니다.

그리고 다음의 제약 사항은 마이그레이션 이전에 검토해야 할 수 있습니다.

  • 공유 볼륨을 열거하는 기능은 2016년 4월 현재 제공되지 않습니다. 즉, \<저장소 계정 이름>.file.core.windows.net 으로 접근해서는 경로가 잘못되었다는 오류 메시지만 보게 됩니다.
    • 이와 관련하여, IIS에서 Azure 저장소 공유 볼륨에 대해 가상 디렉터리를 만들고 권한 체크를 하려고 시도하면 경로가 존재하지 않는다는 오류 메시지가 나타나게 되지만, 무시하셔도 됩니다.

Saturday Azure Live 1703 행사 후기

안녕하세요 Azure 한국 사용자 그룹의 운영진으로 활동하는 김세준 입니다.

Saturday Azure Live 1703에 오신 많은 분들께 깊은 감사 드립니다.마침 이번 주에 여러 상황들이 발생하면서 다소 행사에 대해 걱정을 했었고,

이번 행사부터 No Show 방지를 위한 유료행사가 진행되었음에도 많은 분들이 관심을 가져 주셔서 깊은 감사의 말씀을 올려 드립니다.

 


발표 자료 및 행사 실황 공유

행사 사진

이번 행사는 Opensource 특집으로 진행되었습니다.

  • 무엇이 무엇이 닮았을까? OpenStack과 Azure

 


설문지 응답 및 청중 세션 평가

지난 행사에 이어 이번에도 설문 작성을 15분 께서 설문 조사를 해주셨습니다.

설문에 응해주신 분들 께 다시 한번 깊은 감사 드립니다.

  • 이번 Saturday Azure Live 행사 만족도 (복수 선택 가능)
    • 대체적으로 괜찮았다. : 7
    • 다음에 다시 오겠다. : 12
    • 의견
      • 유익했습니다.
      • Azure Stack Preview가 있으면 좋겠다.
      • 개발 외 운영관점의 내용도 추가 가능할런지요?
      • 타 클라우드 서비스와 비교/공유
      • Tutorial이 생긴다면 Web App에서 개발과 배포, 운영까지 해볼 수 있으면 좋겠습니다.
      • 여러가지 시도 좋습니다. Azure 가능성에 또 놀라네요.
      • 세션 시간이 넉넉했으면 좋겠습니다.
      • Azure를 배울 수 있는 기회는?
  • 세션 1 “무엇이 무엇이 닮았을까? OpenStack과 Azure”의 평가
    • 생각과 다르다 : 1
    • 어려웠다 : 1
    • 만족한다 : 13
    • 의견
      • 신규 기능들 비교가 있었으면 더 좋았겠음.
      • 너무 많은 것들을 설명하려고 하신 것 같다.
      • PT에 사용된 이미지들 해상도가 아쉽네요.
      • 범위가 넓어서 강의하시는데 힘드셨던 것 같습니다.
      • 재미 있는 주제여서 좋았습니다.
  • 세션 2 “Web App on Linux에 Python/Django 배포하지”의 평가
    • 어려웠다 : 1
    • 만족한다 : 14
    • 의견
      • Django ‘Hello world’와 같은 기본적인 예를 하나 들어주었으면 이해가 더 쉬웠을 것 같다.
      • Demo로 직접 보여주셔서 좋았습니다.
      • 다음에도 좋은 강의 부탁드립니다.
      • Application Setting에서 PORT이외에 가능한 세팅이 무엇이 있는지 궁금합니다!
  • 세션 3 “ASP.NET Core와 함께하는 Angular 2 시작하기”의 평가
    • 어려웠다 : 5
    • 만족한다 : 10
    • 의견
      • 세미나 전 어떤 걸 준비하고 오라는 안내가 있었으면 더 효과적이었을 겉 같음
      • Github Source Code가 미리 공개 되면 좋겠다.
      • Application 보단 ASP.NET Core에 좀 더 시간을 배분하면 좋겠어요.
      • .NET Core에 대해 관심만 가지고 있었는데 Angular 2와 같이 강의해 주셔서 좋았습니다.
      • 나중에 Azure에 올리는 방법도 알려주시면 좋겠습니다.
      • .NET Core와 Angular 2의 101 Tutorials Link도 제공하였으면 좋겠다.

소중한 의견을 주신 많은 분들께 다시 한번 감사의 말씀을 올려드립니다.
보내주신 피드백은 최대한 검토하여 다음 세미나 및 기획에 반영하도록 하겠습니다.


결재현황 및 사용 내역

28명 신청, 22명 결재 18명 참석, 16명 5,000원 문화상품권 수령, 미참석 6명
수수료 제외 3,929원 남음
No show 환불 불가 정책에 따라 문화상품권 6장과 3,929원이 남았으며, 다음 행사때 경품으로 전달 될 예정

 


행사 회고

이번엔 유료 행사로 진행한 만큼 No Show가 많이 줄어들었습니다만, 개인적으로는 많은 아쉬움이 남습니다. 날 맑은 토요일에 소중한 시간을 내어 오시려는 분들 께 결재의 부담을 드리는 것이 과연 맞는 일인가? 하는 생각을 하며 다음 행사때엔 최대한 결재의 부담이 없이 No Show를 방지할 수 있는 방안을 가지고 행사를 모집하기 위해 많이 노력하도록 하겠습니다.

저희에게 보내주시는 많은 의견들과 함께 더욱 Azure 한국 사용자 그룹 여러분들께 더욱 알차고 실속있는 세미나를 진행하기 위해 더욱 노력하도록 하겠습니다. 불편하신 점이 있으시면 언제든지 저희 Azure 한국 사용자 그룹(http://krazure.club)에 올려주시면 가능한 범위 내에서 적용하도록 하겠습니다.

특히 이번 행사의 세션 3 “ASP.NET Core와 함께하는 Angular 2 시작하기”는 인도 출신 분께서 강의해 주셔서 영어로 진행될 줄 알았습니다만, 한국어로 전체 세션을 진행 해 주셔서 놀람을 금치 못했고, 질문하신 분들도 영어를 매우 능숙하게 구사하시면서 질문 해 주신 것을 보고 더 열심히 세미나를 준비해서 이런 귀하신 분들께 좋고 높은 퀄리티의 정보를 제공해 드려야 겠다는 생각을 다시 한번 해 보았습니다. 글로벌로 진출하는 Azure 한국 사용자 그룹이 되도록 많은 노력을 해야겠다는 생각을 하였습니다.

이번 행사가 저희 Saturday Azure Live의 네번 째 행사였습니다. 여태까지 전부 참석하신 분 한 분과, 세 번 참석하신 두 분이 계셔서 매우 감동하였고, 저의 지갑을 열게 하셨습니다. 앞으로도 많은 관심과 참석 부탁드리며, 지속적으로 참석하신 분들 께 깊은 감사 전해 드립니다.

행사에 참여해 주신 모든 분들과, 관심을 가져주신 많은 분들께 다시 한번 감사의 말씀 올립니다.

다음에 더 좋은 주제로 뵙겠습니다.

감사합니다  🙂

NGINX (CentOS 7) 리눅스 서버 만들기

NGINX (CentOS 7) 리눅스 서버 만들기

Azure에서는 다른 클라우드 서비스들과 마찬가지로 리눅스를 운영 체제로 사용하는 가상 컴퓨터를 만들 수 있습니다. 선택할 수 있는 리눅스 운영 체제의 종류가 매우 많고, 마켓플레이스에서 커스터마이징된 버전을 고르거나 필요에 따라 여러분만의 리눅스를 게시할 수도 있습니다.

이 아티클에서는 프로덕션 환경에서 널리 사용되는 리눅스 배포판 중 하나인 CentOS 7 이미지를 이용하여 Azure에 서버 VM을 만들고, NGINX 인스턴스를 구축하는 과정을 설명합니다. SSH 키 생성 등의 과정은 Windows 10이 설치된 컴퓨터를 기준으로 설명하지만 다른 OS에서도 대응되는 과정을 진행할 수 있습니다.

준비하실 것

CentOS 7 VM 만들기

Step 1. Azure 포털에 접속한 후, 화면 좌측의 메뉴들 중 새로 만들기 링크를 클릭합니다.

Step 2. 계산 (Compute)를 선택합니다.
Step 3. CentOS 7 이미지가 바로 보이지 않으므로 모두 보기 버튼을 클릭합니다.
Step 4. 검색어 입력 란에 CentOS를 입력하고 잠시 기다리면 CentOS-based 7.3 이라는 추천 항목이 나타납니다. 이 항목을 선택합니다.
Step 5. 검색 결과에서 CentOS-based 7.3 항목을 클릭합니다.
Step 6. 배포 모델은 기본 선택인 Resource Manager로 되어있는지 확인하고, 만들기 버튼을 클릭합니다.
Step 7. 리눅스 서버의 경우 비밀 번호 방식보다 SSH 공개 키를 직접 제공하는 방식을 많이 사용하므로, SSH 공개 키를 만들어 VM 생성 시에 전달해보겠습니다. 나머지 항목들은 적절하게 선택하거나 입력하도록 합니다.
Step 8. SSH 공개키와 비밀키 쌍을 만들기 위해서는 OpenSSH 호환 SSH 클라이언트 프로그램이 필요합니다. Windows 환경에서 작업하는 경우 putty 패키지를 설치하면 필요한 모든 프로그램을 구할 수 있습니다. Google 또는 선호하는 검색 엔진에 putty를 검색어로 입력하면 공식 웹 사이트에 찾아갈 수 있습니다.
Step 9. 웹 사이트에 방문한 다음 다운로드 링크를 클릭하면 여러 종류의 파일을 다운로드할 수 있는 페이지가 나타납니다.
Step 10. 64비트 버전과 32비트 버전 중 시스템에 해당되는 버전의 MSI 패키지를 다운로드하여 설치합니다. 정확한 운영 체제 버전을 알 수 없다면 32비트 버전의 MSI 파일을 다운로드하여 설치해도 무방합니다.
Step 11. MSI 패키지를 다운로드하고 열면 설치 마법사가 시작됩니다.
Step 12. 설치 대상 폴더를 선택하는 단계입니다. 다음 버튼을 클릭합니다.
Step 13. 어떤 기능을 활성화할 것인지 묻는 대화 상자입니다. 패키지에서 설치하는 모든 프로그램이 시작 메뉴에 표시되므로 기본값으로 두고 Install 버튼을 클릭합니다. 시스템에 변경 사항을 반영하는 동작이 포함되어있으므로 관리자 권한이 필요하기 때문에 권한 상승 과정이 동반됩니다.
Step 14. 설치 작업이 완료되면 아래 화면이 나타납니다. Finish 버튼을 클릭합니다.
Step 15. 공개키를 생성해야 하므로 puttygen 프로그램이 필요합니다. 시작 메뉴에서 putty를 검색어로 입력하면 puttygen이 추천 항목으로 표시됩니다. puttygen 프로그램을 실행합니다.
Step 16. 공개키와 개인키를 생성하기 위한 Putty Key Generator가 실행됩니다. Actions 그룹의 Generate 버튼을 클릭합니다.
Step 17. Key 그룹 안의 비어있는 사각형 영역 안에서 마우스 커서를 두고 임의로 휘젓거나, 노트북의 터치 패드나 포인팅스틱으로 임의로 커서를 움직이거나, 터치 입력이 가능한 경우 영역 위에 손가락을 두고 임의로 문지르면 전달되는 좌표값이 암호화 키 생성을 위한 재료로 사용됩니다. 진행률 표시기가 꽉 찰 때 까지 반복합니다.
Step 18. 키가 생성된 다음 Public key for pasting into OpenSSH authorized_keys file: 텍스트 상자의 텍스트를 모두 선택한 다음 Ctrl + C 키를 눌러 클립보드로 복사합니다.

주의! 개인키를 저장해야 하므로 복사만 하고 창을 닫으면 안됩니다!
Step 19. 이제 Key passphrase에 암호를 입력하고, 같은 암호를 Confirm passphrase에 한 번 더 입력한 후 Save private key 버튼을 클릭합니다.
Step 20. 기억할 수 있는 위치에 PPK 파일을 저장합니다. 이 파일은 나중에 putty나 다른 SSH 호환 터미널 프로그램에서 인증 수단으로 사용할 때 다시 사용되므로 안전한 위치에 저장하도록 합니다.

Step 21. 이제 웹 브라우저로 돌아와서 SSH 공개 키 사용 입력란에 puttygen에서 만든 공개 키를 붙여넣고 녹색 체크 표시가 나타나는지 확인한 다음, 확인 버튼을 클릭하여 다음 단계로 진행합니다.

Step 22. 인스턴스의 크기를 선택합니다. A v2 시리즈 혹은 F 시리즈를 선택하는 것을 추천합니다. 가격대와 사양, 등급 등의 정보를 확인하고 해당 셀을 선택한 다음 선택 버튼을 눌러 다음 단계로 이동합니다.
Step 23. 상황에 따라 알맞은 옵션이나 추가 설정을 지정할 수 있습니다. 변경 사항을 모두 지정하거나 확인한 다음 확인 버튼을 클릭합니다.
Step 24. 최종 내역을 검토한 다음 확인 버튼을 클릭합니다.
Step 25. VM이 생성될 때까지 기다립니다.

CentOS 7 VM 접속하기

Step 1. VM의 생성이 완료되면 상세 정보 블레이드가 나타납니다. 만약 자동으로 표시되지 않으면 새로 생성한 VM을 클릭하여 상세 정보 블레이드를 엽니다.
Step 2. 개요 메뉴를 선택하고 도구 모음의 연결 버튼을 클릭하면 Windows VM일 때와는 다르게 SSH 터미널 프로그램으로 접속할 수 있는 ID와 주소 정보가 표시됩니다. 주소를 메모하거나 클립보드로 복사해둡니다.
Step 3. VM이 생성되었으므로 putty 터미널 프로그램에서 접속 정보를 설정하여 접속이 잘 되는지 테스트할 차례입니다. 시작 메뉴에서 putty를 검색어로 입력하고, PuTTY 프로그램을 실행합니다.
Step 4. Step 2에서 복사한 IP 주소를 Host Name 입력란에 넣고, 포트는 기본 포트인 22번을 그대로 사용합니다. 연결 방식은 기본값인 SSH를 선택합니다.

주의 사항! 기본 SSH 포트인 TCP/22는 튜토리얼 상의 편의를 위하여 사용하는 기본 값이지만, 보안을 위하여 나중에 포트 번호를 변경하는 것이 좋습니다.
Step 5. 비밀 번호 대신 공개키/비밀키 쌍을 사용하여 인증을 대신하기로 하였으므로 앞 단계에서 만든 PPK 파일을 지정해야 연결이 가능합니다. 화면 왼쪽의 트리 뷰에서 Connection – SSH – Auth 노드를 선택하고 Private key file for authentication: 입력란의 Browse 버튼을 클릭합니다.
Step 6. 앞에서 만든 PPK 파일을 찾아 열기 버튼을 누릅니다.
Step 7. 파일이 지정된 것을 확인합니다.
Step 8. 지금까지 설정한 내용을 다음번에 다시 입력하지 않고 편리하게 재사용할 수 있습니다. Load, save or delete a stored session 그룹 안의 Saved Sessions에 알기 쉬운 항목명을 입력하고, Save 버튼을 눌러 저장합니다.
Step 9. 저장된 항목명을 더블 클릭하여 연결을 시작합니다.
Step 10. 보증 기관이 없는 사설 인증 키 체인을 지정하여 생성한 것이므로 신뢰할 수 없다는 경고 메시지가 나타나게 됩니다. Yes 버튼을 눌러 연결을 수락합니다.
Step 11. VM 생성 시 입력한 사용자 이름을 입력하고, Private Key 생성 시 지정한 암호를 입력하여 로그인합니다.
Step 12. VM에 설치된 패키지를 최신 버전으로 업그레이드합니다. 다음의 명령어를 입력합니다.

sudo yum upgrade -y

CentOS 7 VM에 NGINX 설치하고 시작하기

Step 1. CentOS 7 VM이 생성되었으므로 일반적인 설치 가이드를 읽고 작업을 진행할 수 있습니다. Digital Ocean의 CentOS 7 환경에서의 NGINX 설치 가이드를 인용하여 튜토리얼을 계속 진행하겠습니다.
Step 2. CentOS 7 EPEL 리포지터리를 추가합니다. 아래와 같이 명령어를 입력합니다.

sudo yum install epel-release

Step 3. NGINX 패키지를 설치합니다. 아래와 같이 명령어를 입력합니다.

sudo yum install nginx

Step 4. NGINX 설치가 끝났으므로 아래와 같이 명령어를 입력하여 서비스를 활성화하고 시작합니다.

sudo systemctl enable nginx
sudo systemctl start nginx

Step 5. Azure 네트워크 내의 보안을 강화하기 위하여, 시스템 방화벽을 시작하고 정상적인 웹 서비스 접속을 위하여 인바운드 방화벽 허용 내역을 수정해야 합니다. 아래와 같이 명령어를 입력합니다.

sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Step 6. 시스템 수준의 방화벽 설정을 변경하였으므로, Azure 네트워크 보안 그룹의 설정도 변경하여 외부에서 연결을 받아들일 수 있게 해야 합니다. VM 블레이드를 열고, 개요 메뉴의 공용 IP 주소의 IP 주소 부분을 클릭합니다.
Step 7. IP 주소 속성 블레이드의 개요 메뉴에서 “다음에 연결됨”에 표시된 항목을 클릭합니다.
Step 8. 네트워크 인터페이스 카드 속성 블레이드의 개요 메뉴에서 “네트워크 보안 그룹”에 표시된 항목을 클릭합니다.
Step 9. 네트워크 보안 그룹 속성 블레이드에서 “인바운드 보안 규칙” 메뉴를 클릭하고, 도구 모음의 “추가” 버튼을 클릭합니다.
Step 10. 이름은 알기 쉬운 이름으로, 우선 순위는 제안된 기본 값으로 그대로 지정하고, 서비스 드롭 다운에서 HTTP를 선택한 후, 작업의 허용 버튼을 클릭하고 확인 버튼을 클릭합니다. 같은  작업을 HTTPS에 대해서도 수행합니다.
Step 11. HTTP와 HTTPS 항목이 추가된 것을 확인합니다.
Step 12. IP 주소를 넣고 외부에서 접속했을 때 아래 그림과 같이 표시되는지 확인합니다.

마무리

이 아티클에서는 CentOS 7 이미지를 이용하여 VM을 만들었지만 더 많은 종류의 VM 이미지를 갤러리에서 찾아 프로비져닝할 수 있습니다. Ubuntu Server, CoreOS, Clear Linux, Redhat Enterprise Linux, Oracle Linux, Asianux 등 매우 많은 종류가 준비되어있습니다.

Azure 무료 계정 만들기

Azure 무료 계정 만들기

인터넷 쇼핑에서부터 각종 전자 상거래에서 ActiveX가 빠른 속도로 사라지고 있습니다. Azure도 2017년 2월부터는 더 이상 계정을 생성할 때 신용 카드 정보를 등록하기 위하여 ActiveX 컨트롤을 설치할 필요가 없게 되었는데요, 빠르면 5분 안에 쉽고 간편하게 한 달 동안 24만원 분량 내에서 사용하실 수 있는 무료 계정을 발급받으실 수 있습니다.

무료 계정 만들기

Step 1: www.azure.com 으로 접속하시면 한국어 페이지가 나타납니다. 만약 한국어 페이지가 보이지 않는다면 azure.microsoft.com/ko-kr 로 접속하시면 됩니다. 그 다음, 페이지 우측 상단의 “무료 계정”을 클릭하세요.

Step 2: 화면이 바뀌면 “무료로 시작” 버튼을 클릭합니다.

Step 3: 계정을 만들기 위해서는 Microsoft 계정 (구 Passport, MSN (Messenger), Windows Live ID 모두 포함)으로 로그인해야 합니다.

  • 계정이 없을 경우 로그인 버튼 아래의 “새 Microsoft 계정 만들기” 링크를 클릭하여 새로운 Microsoft 계정을 만들고 다시 Step 3로 돌아오시면 됩니다.
  • 계정이 있다면 메일 주소와 암호를 넣고 로그인 버튼을 누릅니다.

Step 4: 첫 단계로 사용자 정보를 입력합니다. 빨간색 별표 표시가 붙어있는 항목만 입력하고 다음 버튼을 누릅니다.Step 5: 휴대전화번호 (예: 010-0000-0000)를 입력하고 SMS 인증 또는 전화 인증을 진행하시고 전달받으신 인증번호를 넣어 연락처 인증을 완료합니다.

Step 6: 평가 기간이 끝나면 결제에 사용할 신용 카드 정보를 입력하는 단계입니다. 조건에 동의해야만 계속 진행하실 수 있습니다. 동의 버튼을 클릭합니다.

Step 7: 등록하려는 카드가 VISA나 마스터 카드인지 먼저 확인하시고, 카드 번호, 유효 기간, CVV, 카드 상의 이름 등 필요한 정보를 모두 기재합니다.

  • 카드가 유효한지 검증하기 위하여 1$에 해당하는 금액이 카드로 결제가 이루어지고, 추후 취소 결제가 이루어집니다.
  • 추후 개선이 필요한 부분으로, 해외에서 원화를 결제하는 방식으로 테스트 결제가 이루어져서 1000원에 환율과 수수료가 포함되어 약 1500~1700원 정도의 결제가 발생하게 됩니다.
  • 체크 카드 정보를 이곳에 기재할 수 있습니다. 2000원 정도를 통장 잔고로 남겨두시고 계정 등록에 활용하실 수 있습니다.

Step 8: 모든 정보의 확인이 끝나면 계약 조건에 동의하는지 묻습니다. 동의해야 계정 생성을 완료하실 수 있습니다.

Step 9: 잠시 기다리면, 계정 생성이 4분 이내에 완료된다는 화면이 나타나고, 계속 기다리면 Azure 포털로 이동할 수 있는 버튼까지 활성화됩니다. Azure 구독 시작 버튼이 나타나면 클릭합니다.

Step 10: 포털에 접속했을 때, 무료 혜택분이 포함된 서비스 (이 글에서 설명하는 무료 트라이얼을 포함하여 MSDN, BizSpark 등의 지원 프로그램 모두)를 사용 중인 경우 알람에 현재 얼마나 잔고가 남아있는지 표시됩니다. 화면 우측 상단의 벨 아이콘을 클릭하여 알림 내역을 확인하실 수 있습니다.

더 많은 무료 혜택이 필요하신가요?

Azure는 AWS처럼 1년간 사용 가능한 Free-Tier를 제공하지는 않습니다. 하지만 다양한 방법으로 무료 계정 또는 할인 혜택을 받으실 수 있습니다. 아래는 무료 혜택을 받으실 수 있는 여러 가지 방법들을 정리한 것입니다.

  • 비정기적으로 한국 Azure 사용자 그룹에서는 Azure Free Pass 쿠폰을 발급하여 나누어드립니다. Azure Free Pass 쿠폰을 이용하여 신용 카드 정보를 등록하지 않고 더 많은 금액 지원을 받아 풍부하게 Azure 플랫폼을 체험해보실 수 있습니다. 항상 한국 Azure 사용자 그룹 블로그 및 페이스북에 자주 방문하셔서 최신 정보도 얻어가고, 무료 쿠폰 획득의 기회도 얻어가시기 바랍니다.
  • 최대 5명의 개발자가 MSDN 구독을 받아서 사용할 수 있는 BizSpark 프로그램을 이용하면 설립 초기에 발생하는 개발 도구 및 개발용 인프라 구축 비용을 최소화하실 수 있습니다. 설립 5년 미만, 연매출 5억 미만의 스타트업이라면 BizSpark 프로그램을 통하여 3년간 Azure 구독 및 MSDN 구독을 지원받으실 수 있습니다. 자세한 정보는 https://www.microsoft.com/ko-kr/events/bizspark 페이지를 참고하시기 바랍니다.
  • 기관 및 단체에서 MSDN 구독 또는 Visual Studio 구독을 이미 보유하고 계시다면, MSDN 계정에 로그인하셔서 무료 Azure 구독 혜택을 얻으실 수 있습니다. MSDN 구독이 종료되기 전까지 매달 일정 금액이 충전됩니다.
  • Microsoft Imagine 프로그램으로 Office나 Windows 소프트웨어 혜택 이외에도 Azure에 대한 무료 계정 지원을 받을 수도 있습니다. https://azure.microsoft.com/ko-kr/offers/ms-azr-0144p/ 에서 자세한 내용을 확인하시기 바랍니다.