최근 Docker 콘테이너를 기반으로 하는 효율적인 애플리케이션 배포 및 운영에 대해 관심이 높아지고 있습니다.
Amazon EC2 Container Service(ECS)는 Docker 콘테이너를 지원하는 확장성과 성능이 뛰어난 콘테이너 관리 서비스입니다. Amazon ECS를 사용하면 자체적인 클러스터 관리 인프라를 설치, 운영 및 확장할 필요가 없으며, 다른 AWS 서비스와 연동하도록 설계 되어 있습니다.
본 강의를 통해 Amazon ECS의 소개 및 장점, 그리고 관리 방법 등에 대한 소개를 통해 어떻게 AWS 클라우드에서 효율적으로 확장 가능한 콘테이너 서비스를 운영할 수 있을지 알려드립니다.
DB Migration to Azure Database for PostgreSQLrockplace
Migration from Oracle to PostgreSQL using Azure DMS
-Table of contents-
1) Azure DMS Introduction
2) What are the Azure DMS restriction ?
3)Guide Quick for Azure DMS
4) Test Environment for Migration
5) Migration Progression Procedure
6) DEMO
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
CloudBread
클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 모든 서비스는 마이크로소프트의 클라우드 서비스인 Azure에 최적화되어 동작하며, 안정성과 확장성을 목표로 개발 중입니다.
기능
•PaaS / DaaS 서버 엔진•PaaS, DaaS 로 손쉬운 개발 및 서비스 즉시 배포
•Real Auto Scale - PaaS
•개발/테스트/배포 = 통합 환경
•서비스 규모에 따른 앱 변경 없음
글로벌 론칭 아키텍처
•글로벌 론칭+데이터 동기화
•설계 부터 클라우드에 최적화된 아키텍처 및 프레임워크로 개발
•오픈소스 프레임워크 활용 개발
보안, 관리, 기술교육
•저장/통신에 표준 암호화 기술 적용
•기본 관리자 서비스 및 커스터마이징
•분석/관리 배치 작업 추가 제작 가능
개발자 그룹
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
지원되는 모바일 & 클라이언트환경
•iOS, Android, Windows Phone, Windows 스토어앱, Xamarin, PhoneGap, Sencha 등
•Microsoft Azure Mobile Service가 지원하는 모바일 및 다양한 클라이언트 플랫폼 지원 : http://azure.microsoft.com/ko-kr/documentation/services/mobile-services/
설치
•Wiki의 튜토리얼 설치 참조
프로젝트 설명
•모바일게임과 모바일 앱에서 사용되는 사용자의 패턴과 액션을 기록해 기능들을 제공
•클라이언트 모바일 디바이스는 게임서버로 JSON 방식의 데이터를 요청하고 서버가 해당 데이터를 처리 후 응답
•약 100여개의 비즈니스 로직이 기본제공(Wiki 참조)
•클라이언트는 마이크로소프트가 오픈소스로 직접 만들어 제공하는 라이브러리를 통해 서버로 API를 호출
실행 예제와 API 리스트는 Wiki 참조
Contribute/질문/토론
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성
게임 서비스 아키텍처에서 관계형 데이터베이스는 핵심 컴포넌트이며 또한 전체 서비스의 성능 병목 지점이 되곤 합니다. 이 세션에서는 AWS 상에서 게임 서비스를 구현할 때, 기존 물리환경에서의 DB 성능과 동일하거나 더 높은 성능을 얻을 수 있는 구성을 설명 드리며, MS SQL 구성의 성능 데모를 시연하고자 합니다.
최근 Docker 콘테이너를 기반으로 하는 효율적인 애플리케이션 배포 및 운영에 대해 관심이 높아지고 있습니다.
Amazon EC2 Container Service(ECS)는 Docker 콘테이너를 지원하는 확장성과 성능이 뛰어난 콘테이너 관리 서비스입니다. Amazon ECS를 사용하면 자체적인 클러스터 관리 인프라를 설치, 운영 및 확장할 필요가 없으며, 다른 AWS 서비스와 연동하도록 설계 되어 있습니다.
본 강의를 통해 Amazon ECS의 소개 및 장점, 그리고 관리 방법 등에 대한 소개를 통해 어떻게 AWS 클라우드에서 효율적으로 확장 가능한 콘테이너 서비스를 운영할 수 있을지 알려드립니다.
DB Migration to Azure Database for PostgreSQLrockplace
Migration from Oracle to PostgreSQL using Azure DMS
-Table of contents-
1) Azure DMS Introduction
2) What are the Azure DMS restriction ?
3)Guide Quick for Azure DMS
4) Test Environment for Migration
5) Migration Progression Procedure
6) DEMO
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
CloudBread
클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 모든 서비스는 마이크로소프트의 클라우드 서비스인 Azure에 최적화되어 동작하며, 안정성과 확장성을 목표로 개발 중입니다.
기능
•PaaS / DaaS 서버 엔진•PaaS, DaaS 로 손쉬운 개발 및 서비스 즉시 배포
•Real Auto Scale - PaaS
•개발/테스트/배포 = 통합 환경
•서비스 규모에 따른 앱 변경 없음
글로벌 론칭 아키텍처
•글로벌 론칭+데이터 동기화
•설계 부터 클라우드에 최적화된 아키텍처 및 프레임워크로 개발
•오픈소스 프레임워크 활용 개발
보안, 관리, 기술교육
•저장/통신에 표준 암호화 기술 적용
•기본 관리자 서비스 및 커스터마이징
•분석/관리 배치 작업 추가 제작 가능
개발자 그룹
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
지원되는 모바일 & 클라이언트환경
•iOS, Android, Windows Phone, Windows 스토어앱, Xamarin, PhoneGap, Sencha 등
•Microsoft Azure Mobile Service가 지원하는 모바일 및 다양한 클라이언트 플랫폼 지원 : http://azure.microsoft.com/ko-kr/documentation/services/mobile-services/
설치
•Wiki의 튜토리얼 설치 참조
프로젝트 설명
•모바일게임과 모바일 앱에서 사용되는 사용자의 패턴과 액션을 기록해 기능들을 제공
•클라이언트 모바일 디바이스는 게임서버로 JSON 방식의 데이터를 요청하고 서버가 해당 데이터를 처리 후 응답
•약 100여개의 비즈니스 로직이 기본제공(Wiki 참조)
•클라이언트는 마이크로소프트가 오픈소스로 직접 만들어 제공하는 라이브러리를 통해 서버로 API를 호출
실행 예제와 API 리스트는 Wiki 참조
Contribute/질문/토론
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성
게임 서비스 아키텍처에서 관계형 데이터베이스는 핵심 컴포넌트이며 또한 전체 서비스의 성능 병목 지점이 되곤 합니다. 이 세션에서는 AWS 상에서 게임 서비스를 구현할 때, 기존 물리환경에서의 DB 성능과 동일하거나 더 높은 성능을 얻을 수 있는 구성을 설명 드리며, MS SQL 구성의 성능 데모를 시연하고자 합니다.
테크데이즈 코리아 2014 에서 "The Future of C# and .NET Framework"라는 제목으로 발표한 슬라이드 입니다. 관련 동영상 : http://www.microsoftvirtualacademy.com/training-courses/-techdays-korea-2014-t14
2012 실내디자인학회 주제공모전 http://www.kiid.or.kr/
오픈크리틱을 통해 선정된 수장작 중에
재건마을을 모델로 마을에직접 리서치를 오가고 주민분들과 인터뷰를 거치며
도시의 빈공간. 에 대한 작업을 진행한
경희대학교 주거환경학과 김자현, 박건희의 <human> 이 대상작에 선정되었습니다.
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
마이크로서비스로 시스템을 구성하면 서비스간에 연관관계가 줄어들면서 서비스 릴리즈 속도가 높아지고 유연하게 대처할 수 있지만, 관리포인트가 늘어나게 되어 운영상에 많은 어려움을 마주치게 됩니다. 배포 될 때마다 생성되고 소멸되는 마이크로서비스를 다른 마이크로서비스가 쉽게 참조하게 하고 마이크로서비스들의 설정 정보를 일관되게 관리하는 일은 쉬운일이 아닙니다. 이러한 문제를 해결하기 위해 Spring Cloud 프로젝트와 같은 도구를 비롯하여 Pivotal Cloud Foundry와 같은 클라우드 플랫폼등이 있습니다. 이번 밋업에서는 마이크로서비스를 운영할 때의 어려운점과 도움을 주는 다양한 도구들에 대해 알아보도록 하겠습니다.
효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)Amazon Web Services Korea
AWS 월간 웨비나 8월 녹화 동영상은 아래 링크를 참고하십시오.
https://aws.amazon.com/ko/blogs/korea/category/webinar/
---
모바일 시장이 확대됨에 따라 적은 비용으로 더 빠르게 모바일 사용자를 대상으로 한 모바일 앱 및 웹 서비스를 개발하는 것이 점차 더 중요해지고 있습니다.
이 강연에서는 AWS가 제공하는 Amazon Cognito, Mobile Analytics 및 SNS 등 모바일 서비스들과 SDK를 통해 더 빠르게 모바일 서비스를 개발해 사용자의 요구 사항에 대응하고 확장성을 갖춘 모바일 앱을 만드는 방법에 대해알아봅니다.
또한, AWS Lambda라는 클라우드 함수를 이용한 손쉬운 비지니스 로직 구현, 새로 나온 Amazon DeviceFarm을 통한 자동화된 앱 테스트 및 Amazon API Gateway를 통한 모바일 백엔드 구축 방법 등 서버 없이도 효율적인 모바일 서비스 아키텍처를 구성하는 방법을 알려드립니다
designing, implementing and delivering microservices with event storming, spr...uEngine Solutions
Implementing Microservices is something like an adventure. Analyzing and decomposing microservices with applying DDD and make them into code, all is not easy. With new simple approach - Event storming, designing and implementing an event-driven MSA became easier ever seen before.
* 발표 동영상: https://youtu.be/xWSk3h4IlcY
데브옵스는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다. 기존의 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 제품을 더 빠르게 혁신하고 개선할 수 있도록 AWS 에서는 어떻게 도움 드릴 수 있는지 알아봅니다.
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발강 민우
모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
11. WEB APPS
• .NET, Node.js, Java, PHP, and Python
• Webjobs – 웹앱에서 VM에서 프로그램이나
스크립트를 실행
• VS publish, remote debug 통합
• GitHub, BitBucket, VSO를 이용한 협업
• 자동크기조정 – 신속하게 규모 축소 및 확장
• 스태이징 된 배포를 통한 릴리즈 전 코드 검증
웹, 모바일 및
통합 시나리오에 적합
Web Apps
12. • 네이티브 및 크로스 플랫폼 앱 빌드
• Single Sign On(SSO) – Facebook, Twitter,
Microsoft, Google 계정 연동
• iOS, Android, Windows에 몇 초 내 수백만명에
푸시 알림 전송
• 오프라인 동기화 – SQL, Table Storage, Mongo
DB 등과 오프라인 동기화
• 자동크기조정 – 신속하게 규모 축소 및 확장
전세계에서 사용가능한
모바일 앱 개발 플랫폼
MOBILE APPS
Mobile Apps
13. • 코드 작성 없이 디자인 도구로 빠르게 작성
• 기존에 만들어진 수많은 템플릿 이용
• 워크플로를 쉽게 디자인
• 커스텀 API 사용
• Biztalk API를 보다 쉽게 이용
비즈니스 프로세스
자동화
LOGIC APPS
Logic Apps
14. • SaaS 플랫폼에 쉽게 연결
• API 생태계
• 커스텀 API를 발행할 수 있고 다시 사용 가능
• 논리 앱과 통합
• C#, Java 및 Javascript 등의 다양한 API를
이용한 개발
API 생성 및 사용을
더욱 편하게
API APPS
API Apps
19. 뭐가 필요한데?
계정,
Cloud Server
Cross Platform
• 사용자 정보 체계적 관리 및
분석 처리
• 사용자 기기간 데이터 동기화
• 이용자간 채팅, 자료 공유 등
소셜 서비스
• 외부 계정과 연동 서비스
• Etc
• 윈도우 10, iOS, 안드로이드
등 모든 모바일 플랫폼에 대응
할 수 있는 체계
• 여러 디바이스들에 쉽게 연결
될 수 있는 체계
좋은 서비스
• 좋은 기술들로 퍼져나갈 좋은
서비스
• 서비스의 변화에 대응할 수 있
는 체계
• 기술이 좋아도 서비스가 안 좋
으면 무의미
26. Core + Service Core
Core
[PCL]
Service
Core
[Web App] Storage
Document db
Azure Storage
SQL
Notification
Notification Hub
Data Analysis
Application Insight
Machine Learning
Rest API
HTTP
Business
Logic
Account
서비스 계정 관리
동기화
Web Job
<CODE />
유저 입력
처리
Service Core와의
연결
33. Web App와 Client 사이
User
EventEditView
EventViewModel
(UI Logic)
DB
HTTP
Event
Controller
Logic
for Event
Local DB
Client Web App
Event 데이터 처리 예시
34. 데이터 모델 추가될 때
Entity
Entity
Entity
Contract
Event
EventEditView
EventViewModel
Event Controller
Local DB 처리
Azure DB 처리
….
Event 서버 데이터 처리
데이터 모델 하나 추가 될 때 일일히 해야 되는 것들
35. Generics
class Test<T> where T : class
{
T _value;
public Test(T t)
{
this._value = t;
}
public void Write()
{
Console.WriteLine(this._value);
}
}
<T>
- 코드 재사용, 형식 안정성 및 성능 최대화
- 고유한 제네릭 인터페이스 클래스, 메서드
및 Delegate 생성 가능
- 특정 데이터 형식의 메서드에만 액세스
하도록 제한 가능
class Program
{
static void Main()
{
Test<int> test1 = new Test<int>(5);
test1.Write();
Test<string> test2 = new Test<string>("cat");
test2.Write();
}
}
36. PCL에서 사용 가능한 Entity
Entity Framework 7
(Azure SQL)
Table Entity
(Azure Table Storage ≥4.4.0.0)
Json
(Azure Document db)
Windows
10
Android
(Xamarin)
iOS
(Xamarin)
Core
[PCL]
Service
Core
[Web App]
37. ViewModel<T>
Generic을 이용한 데이터 처리 컨셉
Insert<T>
Entity T (ICustomEntity)
id
UpdatedTime
CreatedTime
…
Update<T>
Delete<T>
Controller<T>
Reflection으로 T변환 필요
TContoller(Http.Post)
TContoller(Http.Put)
TContoller(Http.Delete)
Storage<T>
Sync 기능 통합 가능
Insert<T>
Update<T>
Delete<T>
Get<T>
Sync<T>
다른 싱크 기능을 가진
컨트롤러에서 사용
38. Controller 처리 예시
BaramTableEntity parseEntity =
JsonConvert.DeserializeObject<BaramTableEntity>(apiRequest.RequestJson);
Type type = Type.GetType($"DesignMe.{parseEntity.TableName}, Core, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null");
Type genericType = typeof(TableStorageManager<>).MakeGenericType(type);
dynamic storagemanager = Activator.CreateInstance(genericType);
dynamic entity = storagemanager.Parse(apiRequest.RequestJson);
Type apiResultType = typeof(TableApiResult<>).MakeGenericType(type);
dynamic apiResult = Activator.CreateInstance(apiResultType);
entity = await storagemanager.Insert(entity);
public class TableController : ApiController
{
public async Task<IHttpActionResult> Post(TableApiRequest apiRequest)
…
Request에 T 정보를 넣고 컨트롤러에서 리플렉션으로 복원
39. User
View
더 이상 작업이 필요 없어지는 구간
ViewModel<T>
(UI Logic)
DB<T>
HTTP
Controller
<T>
Storage
Manager<T>
Local DB
<T>.db
Client Web App
40. Entity Framework 7
출처 : entityframeworktutorial.net
Azure SQL 뿐만 아니라
Sqlite 에도 사용 가능해
서버와 클라이언트 모두
사용 가능
44. Notification Hubs
NOTIFICATION
HUBS
• .NET, Node.js, Java, PHP, and Python
• Windows, iOS, Android, Android(China) 등 대부
분의 모바일 플랫폼에 알림 전송 가능
• 등록 시 Tag를 입력해 특정 디바이스나 조건에
맞는 곳에 알림을 보냄
• 수 초 내에 수백만개의 알림 전송 가능
• 뉴스, SNS 알림 등의 Toast 알림과 기기 동기화
를 위한 신호를 주는 Raw 알림 등 여러 타입의
알림 전송 가능
수 초 내에
수백만개의 알림 전송
45. Notification Hubs
Push
Notifications
wns apns gcm
// windows
var toast = @"<toast><visual>
<binding template=""ToastText01"">
<text id=""1"">Hello</text></binding></visual></toast>";
await
Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast,userTag)
;
// apns
var alert = "{"aps":{"alert":"Hello"}}";
await
Notifications.Instance.Hub.SendAppleNativeNotificationAsync(alert,userTag);
// gcm
var notif = "{ "data" : {"msg":"Hello"}}";
await
Notifications.Instance.Hub.SendGcmNativeNotificationAsync(notif,userTag);
태그
정보
태그
정보
46. Tag : 원하는 기기에 알림 보내기
switch (notificationType)
{
case "wns":
registration = new
WindowsRegistrationDescription(notificationUri);
break;
case "apns":
registration = new AppleRegistrationDescription(notificationUri);
break;
case "gcm":
registration = new GcmRegistrationDescription(notificationUri);
break;
}
registration.RegistrationId = id; //Notifation RegistrationId
registration.Tags = new HashSet<string>();
registration.Tags.Add("id:" + accountId);
registration.Tags.Add("device:" + deviceId); //Tag 정보
await Hub.CreateOrUpdateRegistrationAsync(registration);
Notification 등록 시
Id, device id 등을
등록하여
원하는 그룹 혹은
장치에만 따로 알림
전송 가능