-
Notifications
You must be signed in to change notification settings - Fork 129
Install guide kor
Last update : 2016-03-27
If you're looking for English version of this paper, visit CloudBread Developer guide link, please.
- 공식 프로젝트 링크 : https://github.com/CloudBreadProject/CloudBread
- 공식 프로젝트 페이스북 그룹 : https://www.facebook.com/groups/cloudBreadProject/
- 공식 API reference : http://cloudbreadproject.github.io/
이 문서에서는 개발자를 위한 CloudBread 프로젝트 설치 절차를 소개해 드립니다. CloudBread 개발자 가이드 관련 문서는 **CloudBread Project 가이드**를 참고하세요.
이 문서에서는 CloudBread 프로젝트 설치 절차를 소개해 드립니다. 다음과 같은 순서로 진행 가능합니다.
이 문서는 CloudBread 설치 작업 전 미리 수행해야 할 작업들을 소개합니다.
- Microsoft ID 가입 후 체크 : 가입 여부 확인은, https://mail.live.com 에 접속해 메일박스가 보이면 정상 계정입니다.
- Microsoft Azure 등록 : CloudBread는 Microsoft Azure 클라우드 서비스의 PaaS 플랫폼을 이용해 개발되었습니다. CloudBread를 배포하기 위해서 먼저, Azure 등록을 수행해야 하며 무료 등록을 다음 링크에서 수행 가능합니다.(Chrome 브라우저에서 불가하며, IE도 버전에 따라 설치가 안될 수 있다고 합니다.) https://azure.microsoft.com/ko-kr/free/
- 무료로 Azure를 사용하기 위해 추가적으로, MSDN 구독이 있거나, Startup - BizSpark 가입자일 경우에도 무료로 사용 가능합니다.
- 2015년 4월 공개된 Visual Studio Dev Essentials에서 매월 충전되는 25불 무료 크레딧도 가능합니다.
- Github 가입 : https://github.com/ 에서 가입 하세요. 자신의 Repository로 Fork 할때 필요합니다.
- Slack 가입 : http://slack.com 에서 가입하시고, 기본 그룹을 설정하세요.(CloudBread Scheduler 서비스의 알림 용도로 기본 사용)
- 유니티 개발자라면, Unity Studio 5.0 이상 설치 : Unity 다운로드 페이지에서 받으실 수 있습니다.
- Postman : http://www.getpostman.com/ 에서 다운로드 후 Mac용 또는 Windows Chrome용을 설치합니다.
- Github Desktop 설치 : https://desktop.github.com/ 에서 자신의 OS에 맞는 Github 데스크톱을 설치합니다.
- SQL Server 2014 클라이언트 : Azure의 SQL Database 관리를 위한 툴입니다. SQL 2014 다운로드 링크에서 32비트 또는 64비트 버전에 맞는 관리도구를 다운로드 합니다. “MgmtStudio 32BIT\SQLManagementStudio_x86KOR.exe” 또는, “MgmtStudio 64BIT\SQLManagementStudiox64_KOR.exe”를 선택해 설치합니다.
- 게임 서버 개발자라면, 전체 기능을 자신의 개발 환경에서 사용하기 위해 관리 툴만 설치가 아니라 ExpressAndTools 32BIT\SQLEXPRWT_x86KOR.exe 또는 ExpressAndTools 64BIT\SQLEXPRWTx64_KOR.exe을 설치합니다.
- node.js 설치 https://nodejs.org/en/ 사이트에서 v5.7 이상의 Stable 버전을 설치합니다.(2016년 3월 기준 5.7.1 버전)
- Visual Studio 커뮤니티 2015 : Visual Studio 2015 커뮤니티 다운로드에서 받으실 수 있으며 페이지 하단 용도에 맞게 설치하세요.(설치에 30분 가량 소요됩니다.)
- Visual Studio 2015 업데이트 : Visual Studio 업데이트 페이지에서 버전에 맞는 설치가 가능합니다.
- Azure SDK 2.8 for Visual Studio 2015 설치 : Azure SDK 다운로드 페이지에서 VS 2015 버전용 다운로드를 설치 하시면 됩니다.
이 문서는 ARM을 통해 리소스들(SQL server, web app, mobile app 등)의 배포를 하기 위한 방법을 기술합니다. 배포는 CloudBread-ARM 에서 하실 수 있습니다.
CloudBread를 배포 과정 데모 영상 : ARM을 통한 서버 배포
1.CloudBread-ARM 프로젝트에서 fork를 수행.
2.[Deploy to Azure] 버튼을 클릭.
3.파라미터 입력.
- postfix App Name : 생성하는 모든 리소스들의 고유이름
- SQL server login ID : SQL 로그인에 필요한 ID
- SQL server login password : SQL로그인에 필요한 비밀번호
파라미터 입력시 주의할 점
파라미터 | 주의사항 |
---|---|
postfix App Name | 16자 이내의 소문자와 숫자 |
SQL server login ID | 'admin' 이란 ID 사용 불가 |
SQL server login password | 8자 이상. 특수문자를 하나 이상 포함 |
4.Resource group 생성. 또는, 이미 만들어 놓은게 있다면 사용.
5.배포 약관검토 동의하기.
6.[Create] button으로 배포.
배포가 10분 이내로 모든 리소스들을 사용할 수 있습니다. 파라미터 입력에 주의만 해주시면 모든 리소스가 배포에 성공 할 수 있습니다.
배포가 완료되면 다음과 같은 Microsoft Azure 인스턴스들이 생성됩니다. "example"이라는 이름으로 배포를 할 경우
역할 | Azure 인스턴스 타입 | 인스턴스 이름 |
---|---|---|
서비스 그룹 | 리소스 그룹(Resource Group) | 생성한 리소스 그룹 이름 |
CloudBread 서버 | 모바일 앱(Mobile App) | example-cb-fe-ma-dev |
Admin-Web 서버 | API 앱(API App) | example-cb-adminweb-wa-dev |
Socket 서버 | 웹 앱(Web App) | example-cb-socket-wa-dev |
랭킹, 소켓서버 인증, 대량로그 중간 저장소 | Azure Redis Cache | example-cb-redis-dev |
게임 데이터 저장 | Azure SQL 서버 | example-cb-sqlsvr-dev |
게임 데이터 저장 DB | Azure SQL 데이터베이스 | example-cb-sqldb-dev |
로그데이터 저장 | 저장소 계정(Storage Accounts) | examplecbstrdev |
Push 알림 | 알림 허브 name space | examplecbpushnndev |
Push 알림 | 알림 허브(Notification Hub) | example-cb-push-nh-dev |
CloudBread, 소켓, Admin-Web 서비스 계획 | 앱 서비스 계획(App Service Plan) | example-cb-xxx-asp-dev |
위와 같은 인스턴스가 Azure에 자동 생성됩니다. |
이 문서에서는 CloudBread를 Azure에 배포하는 과정을 소개합니다.
CloudBread Core 서버 배포 과정 데모 영상 : Mobile app 연속배포 과정
이 과정 전에, 이미 ARM을 통해 CloudBread의 서비스들이 Azure에 성공적으로 설치 되었다는 전제 하에 아래 절차를 수행합니다.
다음 절차를 통해, 지금 방금 생성한 서비스에 CloudBread를 배포할 수 있습니다. CloudBread는 Azure 모바일 앱(Mobile App) 서비스를 이용합니다.
- 먼저, https://github.com/CloudBreadProject/CloudBread 링크로 이동해 우측 상단의 Fork를 수행해 자신의 리포지토리로 Fork 수행(배포에 필수)
- 좌측 상단 리소스 그룹에서 생성한 리소스 그룹 선택
- 리소스 리스트에서 생성한 앱 서비스 타입의 핸드폰 아이콘 모양 모바일 앱 선택
- 게시 - 연속 배포 선택
- 연속 배포에서 Github 선택
- 권한 부여 항목에 자신의 github 계정 확인
- 조직 선택 부분에 개인 확인
- 프로젝트 선택에서 위의 1번 과정에서 Fork를 수행한 자신의 리포지토리의 CloudBread를 선택
- 지점 선택에서 최근의 ==2.x.x 브랜치== 설정 사용
위의 과정을 수행하시면 바로 배포가 이루어지며, 처음 수행시 5번 과정에서 Github 로그인을 요구할 수 있습니다. 일반적으로 5분 내에 잠시 후 배포가 완료됩니다.
Git에 익숙하시고 자신의 리포지토리에서 Visual Studio로 개발을 원하실 경우 CloudBread wiki - https://github.com/CloudBreadProject/CloudBread/wiki 문서를 참고해 Git 명령으로 로컬 clone 하시고 Visual Studio에서 프로젝트를 열고 web.config를 수정해 바로 Visual Studio에서 배포 하시면 됩니다.
이 문서는 CloudBread에서 필수적인 *연결 문자열(Connection String)*을 처리하는 방안을 소개합니다.
CloudBread 연결 문자열 처리 과정 데모 영상 : DB접근을 위한 키 가져오기
연결 문자열은 ConnectionString으로 보통 어플리케이션이 데이터베이스나 저장소에 접근하기 위한 계정 정보와 서버 정보를 포함하는 문자열입니다.
CloudBread는 데이터 처리를 위한 기본 데이터베이스로 Azure SQL Database, Key/Value 기반 NoSQL 게임 로그 저장소로 Azure Table Storage, 인메모리(In-memory) Key/Value 기반 NoSQL 저장소로 리더보드(랭킹), 소켓서버 인증, 대량로그 처리 중간 큐 저장소의 용도로 Redis Cache를 이용합니다. 각 서비스들의 연결 문자열을 복사해 어플리케이션에서 설정해야 정상적으로 CloudBread 서비스가 구동됩니다.
연결 문자열이 있어야 CloudBread 어플리케이션이 DB나 저장소와 연동되어 완전하게 동작하게 설정 가능합니다. 아울러, 자신의 장비에서 CloudBread를 추가/수정 등 개발하실 경우에도 반드시 이 연결 문자열이 필요합니다.
- 자신의 포털에 로그인 합니다. https://portal.azure.com 로그인 후 생성한 리소스 그룹 선택
- 형식이 SQL 데이터베이스로 생성된 Azure SQL Database를 선택
- 설정 화면에서 데이터베이스 연결 문자열 표시 선택
- 우측에 나온 ADO.NET 연결문자열 전체를 자신의 메모장 등에 저장
Azure SQL Database 연결 문자열 확인 및 복사 과정이 완료 되었습니다.
- 자신의 포털에 로그인 합니다. https://portal.azure.com 로그인 후 생성한 리소스 그룹 선택
- 형식이 저장소 계정으로 생성된 Azure Table Storage를 선택
- 설정 화면에서 우측 블레이드의 엑세스 키 선택 후 연결 문자열 전체를 자신의 메모장 등에 저장
Azure Table Storage 연결 문자열 확인 및 복사 과정이 완료 되었습니다.
- 자신의 포털에 로그인 합니다. https://portal.azure.com 로그인 후 생성한 리소스 그룹 선택
- 형식이 Redis Cache로 생성된 Azure Redis Cache를 선택
- 설정 화면에서 키 - 엑세스 키 표시 선택.
- 우측 블레이드의 Primary connection string(StackExchange.Redis) 연결문자열 전체를 자신의 메모장 등에 저장
Redis Cache 연결 문자열 확인 및 복사 과정이 완료 되었습니다.
이제 DB 개체 설치 과정이 필요합니다.
이 문서는 CloudBread에서 필수적인 데이터베이스 개체를 생성하는 방안을 소개합니다.
CloudBread 데이터베이스 설치 스크립트 수행 과정 데모 영상 : DB 개체생성
CloudBread는 내부적으로 데이터 처리를 위하여 Azure SQL Database를 이용합니다. 이 Azure SQL Database에서 비즈니스 로직을 처리하기 위한 여러 개체들을 자동으로 생성하는 과정을 수행합니다. 이 자동 설치를 위해서는 Windows 명령 프롬프트에서 batch 파일을 실행해 SQLCMD를 통한 설치를 수행합니다.
SQLCMD는 기본 준비사항으로 알려 드렸던 SQL Server 2014 클라이언트 도구에 포함되어 있습니다. 이미 설치하고 오신 분은 SQLCMD를 추가 설치할 필요 없습니다. SQL Server 2014 클라이언트는 데이터베이스 연결 후 정보를 보거나 개발 및 테스트에 이용되는 훌륭한 도구이며 필수 권장 설치 사항입니다. 만약, SQL Server 2014 클라이언트를 설치하지 않으셨을 경우 SQLCMD만 설치 하시면 됩니다. SQLCMD 다운로드 링크 - https://www.microsoft.com/en-us/download/details.aspx?id=36433 만약, ODBC 설치가 필요하다고 할 경우에는 ODBC 설치 후 다시 SQLCMD 설치를 수행하시면 됩니다. ODBC 드라이버 설치 링크 : https://www.microsoft.com/en-us/download/details.aspx?id=36434
스크립트를 수행하시 전, 자신의 Azure SQL Databse 연결 문자열을 통해 "서버주소", "데이터베이스이름", "SQL로그인ID", "SQL로그인암호"가 필요합니다. 이미 가져와 메모장에 복사해 두신 Azure SQL Database 연결 문자열은 보통 다음과 같은 형식입니다.
connectionString="Server=tcp:**서버주소**,1433;Database=**데이터베이스이름**;User ID=**SQL로그인ID**;Password=**SQL로그인암호**;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
위의 코드에서 보시는 것처럼, 자신의 "서버주소", "데이터베이스이름", "SQL로그인ID", "SQL로그인암호"을 메모장 등에 복사하고 아래 절차를 수행합니다.
- CloudBread DB 설치 리포지토리로 이동합니다. https://github.com/CloudBreadProject/CloudBread-DB-Install-Script
- 우측 상단의 Fork를 수행해 자신의 리포지토리로 복사합니다.
- 자신의 리포지토리에서 download 하거나 git이 익숙하실 경우 clone해 로컬로 복사합니다.
- 윈도우에서 명령 프롬프트를 수행합니다. 윈도우키를 누르시고 "cmd" 라고 치시면 바로 보입니다.
- 명령 프롬프트에서 다음 명령을 수행해 해당 폴더로 이동합니다.
cd "CloudBread-DB-Install-Script 다운로드 후 압축을 푼 경로"
- 다음 명령을 수행해 Azure SQL 서버에 정상 접속되는지 체크합니다.
ping-test.bat 서버주소 SQL로그인ID SQL로그인암호 데이터베이스이름
서버를 찾을 수 없거나, 방화벽 제한(Firewall)이 오류가 기본 발생. 해결을 위해 Azure포털 - 생성한 리소스 그룹 - SQL Server - 설정 화면에서 방화벽 설정 표시를 선택하고, 맨위의 클라이언트 IP 주소 추가를 누르시면 됩니다. ping 명령 수행시 서버의 version 정보가 보이면 정상 연결입니다. 만약, SQLCMD를 찾을 수 없다고 나오면 "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn" 경로에 일반적으로 SQLCMD가 존재합니다.(설치 경로는 저와 다를 수 있습니다) 다음 명령으로 path를 등록하고 다시 ping 명령을 수행합니다.
path "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn"
정상적으로 결과가 나오면 성공입니다.
- 다음 명령을 수행해 CloudBread DB 개체를 자동 설치합니다.
install-with-sample.bat 서버주소 SQL로그인ID SQL로그인암호 데이터베이스이름
아무 오류 메세지가 없을 경우 정상 수행된 것입니다.
데이터베이스 개체 생성 과정이 완료 되었습니다.
다음으로, CloudBread 설정 과정이 필요합니다.
이 문서는 CloudBread를 클라우드로 배포 후 설정하는 과정을 소개합니다.
CloudBread 설정 과정 데모 영상 : 생성된DB에 app 접근하기
주의 : 영상에서는 CloudBreadSocketRedisServer만 구성하고 있습니다. CloudBreadRankRedisServer과 CloudBreadGameLogRedisServer도 꼭 App Setting에 넣어야 정상 동작합니다
CloudBread core 서버 어플리케이션에서 데이터베이스와 저장소에 접근하기 위한 계정 정보와 서버 정보를 CloudBread core 서버에 설정하는 과정을 수행해야 정상 동작합니다.
두 방법 중 하나를 택해서 수행하세요.
- 옵션1. Azure 모바일 앱의 응용 프로그램 설정 항목 - 연결 문자열 항목과 앱 설정 항목에 설정 하는 방법 이번 유니티 캠프에서 이용하실 것을 권장합니다.
- 옵션2. CloudBread 프로젝트를 git clone 또는 다운로드 후 Visual Studio의 루트에 위치한 web.config 파일을 수정후 바로 자신의 Azure 모바일 앱으로 배포 하는 방안이며, 서버 개발자이거나 개발을 희망하실 경우 추천.
Azure 포털에서 설정하는 절차를 상세하게 소개해 드립니다.
- 필수적으로 구성해야할 연결문자열 설정. CloudBread가 배포된 Azure 모바일 앱의 응용 프로그램 설정 항목 - 연결 문자열 항목과 앱 설정으로 이동.
- 연결 문자열 부분에 아래 값을 입력 - 메모장에 복사해둔 연결 문자열 활용
- 필수 설정 - 연결문자열 설정
설정이름 | 연결문자열 값 | 추가 설정 | 항목 설명 |
---|---|---|---|
CloudBreadDBConString | Azure SQL Database 연결문자열 | SQL 데이터베이스 | 데이터베이스 연결에 사용 |
CloudBreadStorageConString | Azure Table Storage 연결문자열 | 사용자 지정 | 저장소 계정 연결에 사용 |
-
주의사항으로, Azure SQL Database의 연결 문자열 ==password== 부분이 기본 {your_password_here} 형태로 되어 있습니다. 이부분을 중괄호부터 모두 지우고 꼭~ 수정 해 주세요.
-
연결 문자열 설정 항목 바로 위의 앱 설정 항목에 아래 항목 입력
-
필수 설정 - 앱 설정
설정이름 | 값 | 설명 |
---|---|---|
CloudBreadSocketRedisServer | Redis Cache 연결문자열 | 이 키는 CloudBread-Socket 프로젝트 인증 토큰을 저장하는 Redis에 연결 할때 사용되는 값 |
CloudBreadRankRedisServer | Redis Cache 연결문자열 | 이 키는 leader board(ranking) 서비스 연결에 사용 |
CloudBreadGameLogRedisServer | Redis Cache 연결문자열 | 이 키는 redis를 게임 로그 서비스로 설정할 경우(아래 CloudBreadLoggerSetting과 연동) 연결에 사용 |
- 선택 설정 항목 아래 값들은 선택 항목입니다. 기본 값이 설정되어 있으니 따로 설정하실 필요 없으며, 설정 변경시 이용되니 참고하세요.
설정이름 | 기본값 | 설명 |
---|---|---|
CloudBreadCryptSetting | AES256 | 암호화 방식 설정 |
CloudBreadLoggerSetting | ATS | 기본 로그저장 방식은 Azure Table Storage로 바로 저장. SQL, AQS, redis 설정으로 저장 위치 변경 가능. CBLogger.cs 참조 |
CloudBreadconRetryCount | 3 | DB연결 재시도 수. Production 환경에서 스로틀링 핸들을 위해 30 설정 추천. 최대 30초 간격으로 3회 시도. |
CloudBreadconRetryFromSeconds | 5 | DB연결 재시도 대기 시간 초. Production 환경에서 throttling 핸들을 위해 3으로 설정 추천. 최대 30초 간격으로 3회 시도. |
CloudBreadRankSortedSet | cbrank | Redis에 저장되는 rank 기능 처리 Redis Sorted Set 이름 |
CloudBreadFillRedisRankSetOnStartup | true | 최초 시작시 redis cache에 rank 정보를 채우는 처리 수행 여부 |
CloudBreadGameLogExpTimeDays | 365 | redis에 로그 데이터 적재시 로그 데이터 기본 저장일(게임 로그 저장 in-memory queue 서비스로 사용되는 것이며, Scheduler에 의해 batch로 Azure table Storage로 저장하는 패턴) |
CloudBread 설정이 완료 되었습니다.
여기까지 완료 하셨다면, 이제 CloudBread를 개발/테스트 도구인 Postman의 URL을 일괄 변경해야 합니다.
- https://github.com/CloudBreadProject/CloudBread/wiki/Home-kor 링크에서 Postman collection 파일을 다운로드 합니다.
- 다운로드 후, collection 파일을 메모장 등에서 열고(Json 포맷) 기존 테스트 URL을 직접 구성한 서버의 URL로 일괄 변경(Find & Replace)합니다.
Postman collection에서 CloudBread는 세개의 demo서버 링크를 제공합니다.
- https://cb2-demo.azurewebsites.net/ : 일반 Postman 테스트 서버
- https://cb2-auth-demo.azurewebsites.net/ : Postman 인증 테스트 서버
- https://cb2-crypt-demo.azurewebsites.net/ : Postman 암호화 테스트 서버 위 링크를 모두 직접 구성한 서버의 주소로 Postman collection 파일에서 변경하세요.(Demo 목적으로 세개의 서버로 나뉘어져 있으나, 실제 구성하신 서버는 config 설정 변경만으로 모두 사용 가능합니다) 변경이 완료되면 저장하시고 Postman을 열면 자신이 직접 구성한 서버로 Postman 연결해 개발 및 테스트가 가능합니다.
다음으로 CloudBread Socket 배포와 설정이 필요합니다.
이 문서는 실시간 양방향 통신을 위한 CloudBread-Socket프로젝트 설치 방법에 대해 기술합니다. (만약, 실시간 양방향 통신(Peer-to-Peer) 기능을 이용하지 않을 경우 설치 하지 않으셔도 됩니다.)
CloudBread-Socket 서버 설치 과정 데모 영상 : 소켓 서버 설치
tip
과거에 Node.js를 설치한 경우 버전이 낮아 지원되지 않을 수 있습니다.
명령 프롬포트(윈도우)나 터미널(Unix)를 켜고 node -v
, npm -v
명령어를 입력해서 버전을 확인할 수 있습니다.
git clone https://github.com/CloudBreadProject/CloudBread-Socket.git
cd CloudBread-Socket
npm i
위 과정이 성공적으로 끝났으면 node_modules
라는 폴더가 생겼을 것입니다.
npm test
아래와 같이 결과가 나온다면 완벽합니다.
> mocha tests/* --require babel-core/register --require babel-polyfill --require ./tests/helper --recursive
The server is listening at http://localhost:8111
Server
✓ is a object
✓ says hello worlds!
2 passing (123ms)
에러가 발생할 경우 제대로 설치가 되지 않은 것입니다.
npm start
이 명령어는 앱을 실제 서비스하기 전에 로컬에서 테스트 환경을 구축할때 유용합니다.
기본적으로 8222
포트에 서버가 열립니다.
tools/config.js
파일의 PORT 상수를 수정하거나
npm start -- --port 8888
명령어에 --port
인자를 부여해서 포트를 변경할 수 있습니다.
tools/tasks/deploy.js
를 VI, Atom, Sublime Text, EditPlus, Notepad++ 등의 텍스트 에디터로 엽니다.
12~16번줄 사이에 다음과 같은 내용이 있을 것입니다.
const remote = {
name: 'azure',
url: 'https://[email protected]:443/hbh-cloudbread-socket.git',
website: 'http://hbh-cloudbread-socket.azurewebsites.net',
};
위 항목에서 url, website 항목을 본인의 환경에 맞게 수정합니다.
url은 웹앱과 연결된 레포지토리의 주소, website는 웹앱의 주소입니다.
관리자 포털의 정보 항목에서 URL
=> website
, Git clone url
=> url
입니다.
애져 웹 관리자 포털에서 웹앱 설정으로 접근합니다.
소켓을 Off
에서 On
으로 변경합니다.
수정이 끝났으면 다음 명령어를 실행합니다.
npm run deploy
이후 패키지를 자동으로 Production
형태로 빌드한 뒤 Git 클라이언트를 통해 연결된 주소로 배포합니다.
배포하는 컴퓨터에 배포 서버와 연결된 SSH Key가 없다면 패스워드를 물어볼 것입니다.
이 항목은 실제 서비스할 때 설정이 필요합니다. 단순 테스트 단계에서는 이 단계를 수행하실 필요가 없습니다.
애져 웹 관리자 포털에서 웹앱 설정으로 접근합니다. 앱 설정에 다음과 같은 환경 변수를 추가합니다.
-
REDIS_HOST
=> 레디스 호스트 주소 -
REDIS_PORT
=> 레디스 포트 -
REDIS_AUTH_KEY
=> 레디스 인증 키
이후 앱을 재시작하면 유저가 접속할 때 토큰을 요구합니다. CB에서 인증할 경우 레디스에 자동으로 토큰이 생기며 해당 토큰을 접속시 같이 전달해주면 됩니다.
이 문서는 CloudBread에서 Schduler Batch 역할을 담당하는 CloudBread-Schduler 배포 절차를 설명합니다.
CloudBread-Scheduler 설치 과정 데모 영상 : 스케쥴러 서비스 연동
CloudBread Scheduler는 Azure의 WebJob을 이용해 구현되었습니다. 2016년 3월 현재 WebJob의 가장 효율적인 방법은 Visual Studio를 이용해 Publish as Azure WebJob을 CloudBread-Admin-Web에 붙여서 배포하는 방안입니다. 따로 앱을 추가로 생성하지 않고, 이렇게 앱 서비스와 함께 배포하는 방식으로 처리됩니다.
위의 CloudBread-Admin-Web에 붙여서 배포하는 방식은 추천하는 개발/테스트 방안이며 만약, 대규모 배치를 수행하는 Scheduler 서비스일 경우 하나의 빈 웹 앱을 추가 후 웹 요청 인입이 없도록 web.config를 구성 후, CloudBread Scheduler 전용으로 구성할 것을 권장합니다. 웹 앱의 앱 서비스 계획에 따라 batch 서비스의 크기도 같이 스케일업/스케일아웃 됩니다.(singleton 설정 참조)
WebJob은 Trigger에 의해 동작하게 되는 구조로, WebJob 내부에서 Timer Trigger를 이용해 cron 방식으로 trigger가 발생해 해당 시각에 작업할 내역을 바로 Azure Queue Storage라는 queue 저장소(이름은 cloudbread-batch)로 메세지를 보냅니다. 이 queue에 메세지가 도착하면, WebJob의 queue trigger에 의해 자동으로 queue의 메세지를 가져와 해당 메세지의 JobID를 읽어 batch를 수행합니다. Timer 트리거를 이용해 이 batch들은 모두 Singleton 작업으로 수행되며(2016년 3월) 수행이 완료되면 알림 서비스를 이용해 자동으로 Slack(기본) 또는 GMail로 전달하실 수 있으며, Slack을 이용하는 방식을 권장해 드립니다. 2016년 3월 현재, GMail은 "신뢰할 수 없는 기기에서 로그인 시도" 메세지가 발생합니다. - https://www.google.com/settings/security/lesssecureapps Gmail의 보안성 낮추기를 설정 하시면 정상 동작 됩니다.
먼저, 이미 가입하고 오신 Slack에 로그인 합니다. 다음 링크에서 Incoming Web Hook을 구성합니다. https://my.slack.com/services/new/incoming-webhook/ 즉, batch가 끝나면 자동으로 메세지가 인입될 slack 채널을 선택합니다. 처리하면 Channel webhook URL이 생성되고 이 URL과 채널을 메모장에 복사해 두세요. 전체 URL을 그대로 이용합니다.
https://hooks.slack.com/services/abcd/abcd/abcdefghgh
Slack Incoming Webhook 참고 링크 https://api.slack.com/incoming-webhooks
2016년 3월 권장하는 - Visual Studio에서 설정하는 절차는 아래를 수행하세요.
- https://github.com/CloudBreadProject/CloudBread-Scheduler 리포지토리에서 우측 상단의 Fork를 수행해 자신의 리포지토리로 가져옵니다.
- CloudBread Scheduler 리포지토리의 Branch에서 최신의 ==2.x.x 브랜치==를 선택하고,
- 해당 Branch를 git clone 또는 다운로드
- Visual Studio의 솔루션 파일을 열고, 루트에 위치한 App.config 파일을 아래 절차대로 수정
- CloudBread AdminWeb웹 앱에 WebJob으로 배포 하는 방안입니다. 배포 방안이 몇가지 추가로 존재하나 현 시점에서 가장 효율적인 방법으로 추천해 드립니다. 다른 방식처럼, Azure Portal에서 구성하시면 Visual Studio config 설정보다 우선하게 됩니다.
- 필수 설정 - 연결문자열 설정 과정
설정이름 | 연결문자열 값 | 추가 설정 | 항목 설명 |
---|---|---|---|
AzureWebJobsDashboard | Azure Table Storage 연결문자열 | 사용자 지정 | 저장소 계정 연결에 사용 |
AzureWebJobsStorage | Azure Table Storage 연결문자열 | 사용자 지정 | 저장소 계정 연결에 사용 |
CBSchedulerDBConnectionString | Azure SQL Database 연결문자열 | SQL 데이터베이스 | 데이터베이스 연결에 사용 |
메모장에 복사해 두셨던 연결 문자열을 재사용해 구성합니다. |
- 필수 설정 - 앱 설정 과정
설정이름 | 설명 |
---|---|
CBNotiEmailSenderID | Gmail ID |
CBNotiEmailSenderPassword | GMail PWD |
CBNotiEmailSendToEmail | 메일수신자 Email 주소 - batch 작업 후 팀이나 관리자 그룹메일로 설정 |
CBNotiSlackWebhookURL | 위에서 생성한 Webhook URL 선택 |
CBNotiSlackChannel | Webhook을 받도록 구성한 채널 설정 |
CBNotiSlackUserName | 메세지 보낸사람으로 표시할 Slack User Name |
- 선택 설정 항목 처리 과정 아래 값들은 선택 항목입니다. 기본 값이 설정되어 있으니 따로 설정하실 필요 없으며, 설정 변경시 이용되니 참고하세요.
설정이름 | 기본값 | 항목 설명 |
---|---|---|
CloudBreadconRetryCount | 3 | DB연결 재시도 수. Production 환경에서 스로틀링 핸들을 위해 30 설정 추천. 최대 30초 간격으로 3회 시도. |
CloudBreadconRetryFromSeconds | 5 | DB연결 재시도 대기 시간 초. Production 환경에서 throttling 핸들을 위해 3으로 설정 추천. 최대 30초 간격으로 3회 시도. |
이 모든 구성을 완료하셨다면, Visual Studio에서 Publish as Azure WebJob을 수행해 배포합니다.
- 유휴 상태에서도 실행 Web Job을 수행하다가 로그를 보면 이런 메세지가 나오며 스케쥴러 서비스가 멈출 수 있습니다.
[03/01/2016 17:37:22 > 5a3d2c: SYS INFO] WebJob is stopping due to website shutting down
[03/01/2016 17:37:22 > 5a3d2c: SYS INFO] Status changed to Stopping
[03/01/2016 17:37:23 > 5a3d2c: SYS INFO] Status changed to Success
[03/01/2016 17:37:23 > 5a3d2c: SYS INFO] Status changed to Stopped
[03/01/2016 18:11:27 > 5a3d2c: SYS INFO] Status changed to Starting
[03/01/2016 18:11:27 > 5a3d2c: SYS WARN] 'Always On' doesn't appear to be enabled for this Web App. To ensure your continuous job doesn't stop running when the SCM host is idle for too long, consider enabling 'Always On' in the configuration settings for your Web App. Note: 'Always On' is available only in Basic, Standard and Premium modes.
위에서 보시는 것처럼, 유휴 상태일 경우 서비스가 종료되었다는 이벤트가 뜨면서 서비스가 중지됩니다. 앱 설정의 응용 프로그램 설정 - 항상 사용 설정을 켜시면 계속 서비스가 유지됩니다. 항상 사용 설정은 기본 인스턴스 크기 이상부터 지원합니다.
Azure Scheduler 구성과 배포 과정이 완료 되었습니다. 다음으로 CloudBread Admin Web 배포 과정을 수행합니다.
이 문서에서는 CloudBread-Admin-Web을 웹앱에 배포하는 과정을 소개합니다.
==현재 CloudBread-Admin-Web v2 버전이 최종 개발 완료 단계입니다. 잠시 기다리신 후 v2를 이용하시길 권장해 드리며, 2016년 4월 5일 전후로 완료될 예정입니다.==
CloudBread-Admin-Web 설치 과정 데모 영상 : admin web 연속배포
다음 절차를 통해, 지금 방금 생성한 서비스에 CloudBread-Admin-Web을 배포할 수 있습니다. CloudBread는 앱 서비스의 웹 앱을 이용합니다.
- 먼저, https://github.com/CloudBreadProject/CloudBread-Admin-Web 링크로 이동해 우측 상단의 Fork를 수행해 자신의 리포지토리로 포크 수행(배포에 필수)
- https://portal.azure.com에 접속 후 좌측 상단 리소스 그룹에서 생성한 리소스 그룹 선택
- 리소스 리스트에서 생성한 앱 서비스 타입의 지구본 아이콘 모양 웹 앱 선택
- 게시 - 연속 배포 선택
- 연속 배포에서 Github 선택
- 권한 부여 항목에 자신의 github 계정 확인
- 조직 선택 부분에 개인 확인
- 프로젝트 선택에서 위의 1번 과정에서 Fork를 수행한 자신의 리포지토리의 CloudBread-Admin-Web를 선택
- 지점 선택에서 최근의 ==2.x.x 브랜치== 설정 사용
위의 과정을 수행하시면 바로 배포가 이루어지며, 처음 수행시 5번 과정에서 Github 로그인을 요구할 수 있습니다. 일반적으로 5분 내에 잠시 후 배포가 완료됩니다.
Git에 익숙하시고 자신의 리포지토리에서 Visual Studio로 개발을 원하실 경우 CloudBread wiki - https://github.com/CloudBreadProject/CloudBread/wiki 문서를 참고해 Git 명령으로 로컬 clone 하시고 Visual Studio에서 프로젝트를 열고 web.config를 수정해 바로 Visual Studio에서 배포 하시면 됩니다.
*혹시 현재 버전에 위의 사항을 따라했음에도 불구하고 오류가 난다면, Visual Studio 의 'Publish to Azure' 를 통해 배포하세요.
TODO