SlideShare a Scribd company logo
2017
Mobile Architecture Overview
Mobile Architecture Overview 2017
Introduction 강의 순서
강의 순서
Introduction
• 강의목표
• 강사소개
History
• 스마트폰 역사
Architecture
• Different Mobile App Types
• iOS Architecture
• Android Architecture
• Hybrid Architecture
Enterprise Solution
• Mobile Device Management
• Mobile Application Management
• Mobile Enterprise Application Platform
• Mobile Application Development Platform
• Mobile Content Management
Back-End Architecture
• Vendor Architecture
• Micro Service Architecture
• OAUTH 2.0
• Push Server
• Google Firebase
Development Skills
• Native Skills
• Hybrid Skills
• Beside Skills
Advanced
• Test Framework
• React Native
• Developer Program
• Apple Enterprise Developer Program
• Mobile Landscape
Mobile Architecture Overview
Introduction
강의 개요
강사 소개
Mobile Architecture Overview 2017
Introduction 강의 개요
• 모바일 스마트폰의 역사를 통해 배경 지식을 갖게 된다.
• 주요 모바일 스마트 폰 앱 개발 방법의 차이점을 알고 그 아키텍처 구조를 안다.
• 기업 환경에서 사용하게 되는 모바일 솔루션을 알고, 기업 환경에서의 모빌리티 요구사항을 이해한다.
• 모바일 Front-End 아키텍처와 함께 Back-End 아키텍처를 이해하여 모바일 스택을 이해한다.
• 개발 방법에 따른 필요한 개발 스킬의 범위를 알고 앞으로의 교육을 위한 방향성을 제시한다.
• 기초 적인 모바일 개발에서 더 나아가 트렌드 기술이나 깊게 다뤄야 하는 내용에 대해 알아본다.
• 모바일 관련 Open Source Insight 를 넓히고 이를 실제 프로젝트에 응용할 수 있다.
강의 목표
Mobile Architecture Overview 2017
Introduction 강사 소개
Leonardo Park
kt ds_Application Architecture
IoT Makers Platform, Smartzone, TMS 2.0
한글과컴퓨터_ 선임연구원
Webkit, ePub Rendering, HWP Filter
엠군미디어_ 선임연구원
FFMpeg, Live Streaming, Server Side Encoding
ageofblue@gmail.com@ageofbluecodingman
Mobile Architecture Overview 2017
Introduction 강의 개요
교재
https://goo.gl/p43yd3
Mobile Architecture Overview
History
스마트폰의 역사
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 전자식 숫자 적분 및 계산기(Electronic Numerical Integrator And Computer; ENIAC)
• 1943년에서 3년에 걸쳐서 펜실베이니아 대학의 모클리와 에커트가 제작.
• 폭: 1 m
• 높이:2.5m
• 길이:25m
• 총 중량: 약 30 t
• 진공관 갯수: 약 18,000개
• 릴레이: 1500개
• 작동 전력: 150 kw
• 개발비 총액: 49만 달러 (당시 미국 달러 기준)
최초의 컴퓨터 ENIAC
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 1992년 IBM 사이먼 퍼스널 커뮤니케이터 (IBM Simon Personal Communicator)는 IBM이 설계한 휴대용 휴대 전화이자 개인 정보
단말기.
• 1997년에 이르러 스마트폰이라는 용어가 만들어졌지만, 사이먼 퍼스널 커뮤니케이터는 최초의 스마트폰으로 간주됨.
최초의 스마트폰 IBM 사이먼
• IBM과 벨사우스(Bellsouth)에서 공동 개발.
• 1992년 라스베가스 컴덱스에서 전시.
• 1993년 일반인들에게 시판
• 당시 가격은 899불
• 발신/수신기능 만 있는 당시 휴대전화들과 비교하면
• 주소록, 세계시간, 계산기, 메모장, 이메일, 팩스, 오락 기능이 포함
• 최초로 터치스크린을 탑재.
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 노키아 커뮤니케이터 라인은 1996년에 노키아 9000을 시작으로 첫 스마트폰 제품라인(Nokia Communicator line)을 발표.
• 팜탑 컴퓨터 스타일의 스마트폰은 당시 노키아의 베스트셀러의 휴대 전화와 휴렛패커드의 초기 PDA 모델의 협동 결과로 탄생.
• 이 두 개의 장치들은 힌지(hinge)를 통해 고정.
• 노키아 9210은 최초의 컬러 스크린, 개방형 운영 체제를 가진 최초의 진정한 스마트폰.
• 9500 커뮤니케이터, 노키아의 첫 카메라 폰이자 WiFi 폰.
• 고가의 휴대폰으로 다른 제조사의 스마트폰보다도 20%~40% 정도 더 비쌈.
• 2010년 심비안을 오픈 소스화.
• 2007년 이후 애플을 중심으로 급박하게 바뀌던 모바일 생태계에 적응하지 못하고 현재는 마이크로소프트에 인수된 상태.
• 휴대 전화 사업본부는 마이크로소프트 모바일로 사명이 개명.
노키아
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 심비안에서 개발한 모바일 기기용 운영 체제.
• 라이브러리, 사용자 인터페이스, 프레임워크, 다양한 도구를 포함.
• 2009년 2월 노키아에 인수.
• 2009년부터 심비안 재단을 설립. 로열티 없는 오픈소스 모바일 운영 체제를 만들 목적으로 운영.
• 노키아를 비롯해 삼성전자, LG전자, AT&T, NTT도코모, 모토로라, 소니 에릭슨, 보다폰 등이 참여.(모토로라와 LG전자는 사실상
불참)
• 2010년 9월말 소니 에릭슨은 심비안 OS를 탑재한 단말기 생산 중단을 선언.
• 삼성전자도 2010년 12월 31일까지 심비안 OS에서 지원하는 개발 관련 콘텐츠를 제거하고 삼성 앱스토어에서 심비안 앱들을
삭제.
심비안OS
• 프로그래밍 언어 C++, 자바ME, 파이썬, Qt익스텐디드
• 업데이트 방식 OTA(무선업데이트)
• 패키지관리자 노키아 슈트 sis
• 지원되는 플랫폼 ARM 아키텍처, x86
• 커널형태 마이크로커널(EKA2)
• 라이선스 최초 상용 소프트웨어, 현재 (EPL)
Mobile Architecture Overview 2017
History 스마트폰의 역사
• '블랙베리'라는 이름의 휴대용 무선 기기는 1999년에 공개된 양방향 무선 호출기.
• 2002년부터 발매된 스마트폰 '블랙베리'가 현재 널리 알려져 있음.
• 푸시형 전자 메일, 휴대 전화, 텍스트 메시징, 인터넷 팩스, 웹 브라우저 기능을 비롯하여 많은 무선 정보 서비스가 탑재.
• 주소록, 캘린더 서비스, 일정 목록 등을 갖추고 있으며, 전자 메일 위주의 서비스에 적합하게,
손가락으로 누를 수 있는 쿼티(QWERTY) 컴퓨터 자판내장. ARM 7 및 9 프로세서를 탑재.
• 법인대상 서비스 블랙베리 엔터프라이즈 서비스(BlackBerry Enterprise Service, BES) 는 개인 및 중소기업 대상 서비스.
• RIM의 발표에 의하면, 2008년 9월 25일 서비스 가입 사용자 1900만명.
• 2011년 닐슨의 조사, iOS와 안드로이드폰 점유율의 강세로 블랙베리의 점유율은 하락.
• 2013년 2월 기준으로 블랙베리의 전 세계시장 점유율은 1.1%.
• 현재는 …
Research In Mobile
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 블랙베리 OS(BlackBerry OS)는 리서치 인 모션(Research In Motion Limited, RIM)이 블랙베리 스마트폰을 위해 만든 소프트웨어 플랫폼.
• 멀티태스킹을 제공하고, 트랙휠, 트랙볼, 트랙패드, 터치스크린 같은 특화된 입력 장치들을 지원.
• 7.1 OS 버전부터는 핫스팟 기능이 추가.
• 이 후 제품은 블랙베리 10 OS로 바뀌어서 출시.
• 안드로이드와 iOS에 밀려서 점유율이 하락하고 있다.
블랙베리 OS
• 마지막 버전 7.1.0.2930 (블랙베리9790/9900))
• 프로그래밍 언어 자바
• 패키지관리자 블랙베리 데스크톱 매니저
• 지원되는 플랫폼 블랙베리 계열의 스마트폰
• 커널형태 자바 가상 머신
• 기본 UI 그래픽 사용자 인터페이스
• 라이선스 사유
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 마이크로소프트의 윈도우 모바일(당시 OS명은 포켓 PC) 팜원의 팜이 각각 유·무선 네트워크 연결을 지원.
• 2002년, 2003년 정식으로 OS상에서 전화 모듈을 지원함으로써 PDA폰과 스마트폰이 출시.
• 윈도우 모바일은 기존 포켓 PC와 동일한 사양에 전화 모듈을 넣은 것을 포켓 PC 폰 에디션.
• 터치스크린이 없고 UI가 일반 휴대 전화에 맞춰진 것을 스마트폰으로 명명.
• 가격, PDA폰에 대한 편견 등으로 인해 일반 휴대 전화만큼 널리 사용되지는 못함.
• 2012년부터 스마트폰용 운영 체제 윈도우 폰을 출시.
• 노키아를 필두로 많은 스마트폰을 만들고 있지만 여전히 시장의 반응은 나쁨.
• 무엇보다 앱 생태계의 빈약함이 큰 약점.
• 2014년부터는 마이크로소프트 모바일에서 직접 휴대 전화를 생산.
Microsoft
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 2007년에 iOS 기반으로 아이팟, 휴대 전화, 모바일 인터넷이라는 세 가지 주요 기능을 합친 스마트폰인 아이폰을 출시.
• 2008년에는 3세대 통신망을 지원하는 아이폰 3G를 출시.
• 2009년에 아이폰 3GS를 출시.
• 2010년에는 아이폰 4를 출시.
• 2011년에 아이폰 4S를 출시.
• 2012년에는 아이폰 5를 출시.
• 2013년 9월 아이폰5S와 5C 출시와 동시에 iOS7을 공개.
• 2014년 9월 아이폰6와 아이폰6 플러스를 출시. iOS8 공개.
• 스마트폰이 활성화될 수 있었던 '스토어'라는 개념을 도입해 적용.
• 2015년 9월에는 아이폰 6s와 아이폰6s+를 출시.
• 아이폰은 세계 스마트폰 시장 수익의 94%를 차지한다.
• 2016년 7월 28일에는 스마트폰 최초로 누적 판매량 10억대 돌파.
Apple
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 안드로이드(영어: Android)는 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준
응용 프로그램(웹 브라우저, 이메일 클라이언트, 단문 메시지 서비스(SMS), 멀티미디어 메시지 서비스(MMS)등)을 포함하고 있는
소프트웨어 스택이자 모바일 운영 체제.
• 자바 언어로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일 된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공.
• 2005년에 안드로이드 사를 구글에서 인수한 후 2007년 11월에 안드로이드 플랫폼을 휴대용 장치 운영 체제로서 무료 공개.
(안드로이드사는 앤디 루빈이 세운 업체)
Google
Mobile Architecture Overview 2017
History 스마트폰의 역사
Google
• 2007년 11월 5일에 텍사스 인스트루먼트, 브로드컴 코퍼레이션, 구글,
HTC, 인텔, LG전자, 마벨 테크놀로지 그룹, 모토로라, 엔비디아, 퀄컴,
삼성전자, 스프린트 넥스텔, T-모바일의 몇몇 회사로 구성된
컨소시엄인 오픈 핸드셋 얼라이언스(OHA)가 모바일 기기의 공개
표준을 개발하는 것을 목표로 결성. OHA는 리눅스 커널 2.6에서
빌드된 그들의 첫 번째 모바일 기기 플랫폼 결과물인 안드로이드를
발표.
• 2008년 10월 21일에 안드로이드가 오픈 소스로 선언. 네트워크와
텔레폰 스택을 포함하는 완전한 소스 코드를 아파치 라이선스로
공개.
• 2008년 12월 9일에 ARM 홀딩스, 아세로스(Atheros Communications),
에이수스, 가르민, 소프트뱅크, 소니 에릭슨, 도시바, 보다폰으로
구성된 새로운 14개의 멤버가 안드로이드 프로젝트에 참여.
• 현재 API만 완전한 공개 소스인 상태이며 VM에대한 소스는
공개하지 않음.
Mobile Architecture Overview 2017
History 스마트폰의 역사
• 스마트폰을 발전 속도는 매우 빠름.
• 최초의 스마트폰 이후 20년 만에 현대의 스마트폰이 나오게 되었으며, 그에 따르는 생태계를 이루게 됨.
• 제조 뿐 만 아니라 소프트웨어 업계에도 지대한 영향을 미침.
• 지금도 매년 아이폰은 2개의 모델 라인이 출시됨.
Timeline
1992년 2017년
About 20 years
Mobile Architecture Overview 2017
History 스마트폰의 역사
Are U Ready?
• 모바일 개발자 - 최신 기술을 다루는 멋진 직업.
Mobile Architecture Overview 2017
History 스마트폰의 역사
Are U Ready?
• 모바일 개발자 – 하지만 실상은 이런 모습 ???
Mobile Architecture Overview 2017
History 스마트폰의 역사
Are U Ready?
• 모바일 개발자 – 올바른 개발자의 자세.
Mobile Architecture Overview
Architecture
Different Mobile App Types
Android Architecture
iOS Architecture
Hybrid Architecture
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 전통적인 방식의 웹사이트 Mobility 제공은 반응형 웹을 통하여 지원.
• XHTML, HTML5, JQuery Mobile과 같은 JavaScript 등의 기술을 통하여 구현.
• 기존의 웹 컨텐츠를 모바일에 적합한 UI/UX로 변환하여 제공함.
• 모바일 브라우저를 통하여 해당 웹사이트를 접속.
• 보통 Http Header를 통해 모바일 브라우저나 OS 를 판단하여 모바일 웹사이트나 데스크탑 웹사이트로 분기하여 서비스.
모바일 개발의 분류
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 각 제조사별 디바이스 파편화. 안드로이드 디바이스의 경우 파편화 정도가 심각함.
• 개발자의 입장에서 멀티 디바이스를 지원해야 하는 경우, 더 많은 코드와 테스트가 필요함.
• 특히 안드로이드 사용자의 다양한 해상도를 가진 디바이스 지원은 불가능 함.
디바이스 파편화
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 모바일 디바이스 파편화로 인한 새로운 기술이 요구됨.
• 단지 모바일 UI/UX 측면 뿐만 아니라 아키텍처적 개선이 요구됨.
• 여러 플랫폼에서의 애플리케이션 개발을 위한 하이브리드 앱 개발 혹은 크로스 플랫폼 기술이 요구됨.
• 여러 디바이스의 OS, SDK, 해상도 등의 처리를 위한 프레임워크 요구.
• 하나의 소스로 여러 플랫폼에 배포할 수 있는 프레임워크의 요구.
하이브리드 모바일 앱 개발의 배경
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 개발 방식에 따라 크게 웹 앱, 하이브리드 앱, 네이티브 앱 개발로 나뉘어짐.
• 웹 앱 방식 이나 하이브리드 앱 개발 방식은 HTML5, JavaScript 기술을 이용하여 앱을 개발.
• 원칙적으로 웹 앱의 경우는 디바이스의 API 사용 불가.
• Native 앱 같은 경우는 OS에서 제공되는 SDK를 통해 개발.
• 하이브리드 및 네이티브 앱은 패키징을 통하여 앱스토어 배포.
모바일 개발의 분류
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 하이브리드 방식에는 네이티브 컨테이너 안에 웹코드와 네이티브 코드가 같이 들어가는 구성을 가질 수 있음.
• 보통 플러그인 방식으로 네이티브 코드가 추가됨.
• UI/UX 적인 부분에서 최적의 효과를 내기위해 네이티브 컨테이너를 직접 구성하는 방식도 있음.
메뉴나 중요한 컴퍼넌트 들은 네이티브로 구현하고 자주 바뀌는 동적 컨텐츠는 웹코드로 구현.
모바일 개발의 분류
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 네이티브 앱의 경우 바로 안드로이드 혹은 iOS 와 같은 모바일OS 에서 제공되는 SDK를 통해 API 호출.
• 하이브리드 앱의 경우는 네이티브 컨테이너에서 제공되는 API를 호출.
• 네이티브 컨테이너는 OS에서 제공되는 API를 APP 개발자에게 제공함.
• 웹 앱의 경우는 모바일 브라우저를 통해 URL 접속 후 애플리케이션을 접근.
• 웹 앱의 경우는 OS 에서 제공되는 API 호출은 할 수 없으며, 브라우저에서 제공되는 기능만 사용.
모바일 개발의 분류에 따른 구조
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 하이브리드 방식은 독립 실행형 앱, 다중 앱 관리 방식의 앱, 웹 – 네이티브 혼합 방식으로 세부적으로 나뉠 수 있다.
• 하이브리드 방식과는 다르게 크로스 플랫폼 네이티브 방식도 존재한다.
• 클로스 플랫폼 네이티브 방식은 C, C++과 같은 언어로 짜여진 라이브러리를 제공하여 하나의 언어로 개발하게 된다.
 Android NDK : C++, iOS Objective : C, C++
 Cocos2d-x 와 같은 게임 개발 프레임워크.
모바일 개발 방식에 대한 분류
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 웹의 장점과 앱의 장점을 결합한 환경.
• 사용자가 브라우저를 통하여, 처음 방문할 때부터 사용 가능하며, 설치가 필요 없음.
• 느린 네트워크에서도 빠르게 로드 되고, 관련된 푸시 알림을 전송하며, 홈 화면에 아이콘이 있고, 전체 화면 전환.
Progressive Web App
• Progressive - 점진적인 개선을 통해, 어떤 브라우저를 선택하든 상관없이 모든 사용자에게 적합.
• 반응형 - 데스크톱, 모바일, 태블릿 등 모든 폼 팩터에 적당.
• 연결 독립적 - 서비스 워커를 사용하여 오프라인이나 느린 네트워크에서 작동.
• 앱과 유사 - 앱 셸 모드에서 작성되기 때문에 앱 스타일의 상호작용 및 탐색 기능을 사용자에게 제공.
• 최신 상태 - 서비스 워커 업데이트 프로세스 덕분에 항상 최신 상태로 유지.
• 안전 - HTTPS를 통해 제공되므로 스누핑이 차단되며, 콘텐츠가 위/변조 방지.
• 검색 가능 - W3C 매니페스트 및 서비스 워커 등록 범위 덕분에 "애플리케이션"으로 식별되므로, 검색 엔진에서 검색 가능.
• 재 참여 가능 - 푸시 알림과 같은 기능을 통해 쉽게 재참여가 가능.
• 설치 가능 - 앱 스토어 필요 없이 사용자가 자신에게 가장 유용한 앱을 홈 화면에 유지할 수 있음.
특징
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
Service Worker
• 브라우저가 백그라운드에서 실행하는 스크립트
• 웹페이지와는 별개로 작동하며, 웹페이지 또는 사용자 상호작용이 필요하지 않은 기능에 사용.
• 현재 푸시 알림 및 백그라운드 동기화와 같은 기능은 이미 제공.
• 향후 주기적 동기화 또는 지오펜싱과 같은 기능 지원 예정.
• 오프라인 환경을 완벽히 통제할 수 있는 권한을 개발자에게 부여하여 오프라인 환경을 지원.
• 서비스 워커는 JavaScript Worker이므로 DOM에 직접 액세스할 수 없음.
• postMessage 인터페이스를 통해 전달된 메시지에 응답하는 방식으로 제어 대상 페이지와 통신.
• 서비스 워커는 프로그래밍 가능한 네트워크 프록시이며, 페이지의 네트워크 요청 처리 방법을 제어함.
• 서비스 워커는 Promise를 광범위하게 사용함.
특징
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
Progressive Web App Demo
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
• 개발자 혹은 개발 그룹이 가지고 있는 스킬은 무엇인지?
• 앱스토어에 배포되어야 하는지?
• 디바이스의 특화된 기능을 사용해야 하는가?
• 좀더 빠른 성능이나 개선된 UI 상호작용이 필요한가?
• 복수 플랫폼의 배포 여부.
모바일 개발 방식의 선택
Mobile Architecture Overview 2017
Architecture Different Mobile App Types
모바일 개발 방식의 선택
• 애플리케이션이 센서나 멀티미디어 적인 장치의 기능을 사용하는가?
• 홈스크린이나 디바이스의 메모리 공간을 사용 해야 하는가?
• 그래픽이나 계산 로직의 성능이 필요한가?
• 데스크탑 사용자 경험과 모바일 사용자 경험이 분리 되어 제공되어야
하는가?
• 디바이스를 사용하기 위해 모바일 네비게이션이 필요한가?
• 사용자들에게 이 앱을 여러 디바이스에서 제공되어야 하는가?
• 데스크탑과 모바일 사이트의 많은 코드를 비용 감소를 위해
재사용해야 하는가?
• OS 릴리즈에 따르는 유지보수 비용을 감소해야 하는가?
• 사용자의 디바이스에 데이터를 저장해야 하는가?
Mobile Architecture Overview 2017
Architecture Android Architecture
Android Platform Architecture
다양한 기기와 폼 팩터에 사용할 수 있도록 제작된 Linux 기반의 오픈 소스
소프트웨어.
Get Source : https://source.android.com/
Linux Kernel
• Linux 커널 기반.
• Android 런타임은 스레딩 및 하위 수준의 메모리 관리 기능에 Linux
커널사용.
• Linux 커널의 주요 보안 기능을 활용하고, 제조업체가 드라이버를
개발용이.
HAL(Hardware Abstract Layer)
• 상위 수준의 Java API 프레임워크에 하드웨어 표준 인터페이스를 제공
• 여러 라이브러리 모듈로 구성되어 있으며, 카메라 또는 블루투스 모듈과
같은 특정 유형의 하드웨어 구성 요소를 위한 인터페이스 구현.
• 프레임워크 API가 하드웨어 액세스를 위해 호출하면, 시스템이 해당
Mobile Architecture Overview 2017
Architecture Android Architecture
Android Platform Architecture
Android 런타임
• Android 버전 5.0(API 레벨 21) 이상을 실행하는 기기의 경우, ART(Android 런타임) 인스턴스로 실행.
• ART는 DEX 파일을 실행하여 저용량 메모리 기기에서 여러 가상 머신에서 실행하도록 작성됨.
• DEX 파일은 Android용으로 특별히 설계된 바이트코드 형식.
네이티브 C/C++ 라이브러리
• ART 및 HAL 등의 많은 핵심 Android 시스템 구성 요소와 서비스가 C 및 C++로 작성된 네이티브 코드를 기반으로 빌드.
• 플랫폼은 Java 프레임워크 API를 제공하여 이러한 일부 네이티브 라이브러리의 기능을 앱에 노출함.
• 프레임워크의 Java OpenGL API를 통해 OpenGL ES에 액세스하여 앱에서 2D 및 3D 그래픽을 그리고 조작할 수 있는 지원 기능 등을
추가 할 수 있음.
• C 또는 C++ 코드가 필요한 앱을 개발하는 경우에는 Android NDK를 사용하여 네이티브 코드에서 직접 이러한 몇몇 네이티브 플랫폼
라이브러리에 액세스할 수 있음.
Mobile Architecture Overview 2017
Architecture Android Architecture
Android Platform Architecture
Java API 프레임워크
• Android OS의 전체 기능 세트는 Java 언어로 작성된 API를 통해 액세스할 수 있음.
• 핵심 모듈식 시스템 구성 요소 및 서비스 재활용을 단순화하여 Android 앱을 제작하는 데 필요한 빌딩 블록을 구성.
기능이 풍부한 확장 가능한 뷰 시스템 : 목록, 그리드, 텍스트 상자, 버튼 및 삽입 가능한 웹 브라우저를 포함하여 앱의 UI를
빌드하는 데 사용 가능
Resource Manager : 다국어 문자열, 그래픽 및 레이아웃 파일과 같은 코드가 아닌 리소스에 대한 액세스 제공
Notification Manager : 모든 앱이 상태 표시줄에 사용자 지정 알림을 표시할 수 있도록 지원
Activity Manager : 앱의 수명 주기를 관리하고 공통 Navigation 백 스택 제공
Contents Provider : 앱이 주소록 앱과 같은 다른 앱의 데이터에 액세스하거나 자신의 데이터를 공유할 수 있도록 지원
• 개발자는 Android 시스템 앱이 사용하는 것과 동일한 프레임워크 API에 대하여 전체 액세스 권한을 가짐
시스템 앱
• Android는 이메일, SMS 메시징, 캘린더, 인터넷 검색, 주소록 등의 주요 앱 세트와 함께 제공.
• 기본적으로 포함된 앱과 사용자가 설치한 앱을 구별되는 특별한 상태가 없음.
• 타사 앱이 사용자의 기본 웹 브라우저, SMS 메시징 또는 기본 키보드가 될 수 있음. (단, 시스템의 설정 앱 등 몇 가지 예외가 적용될
수 있음).
• 시스템 앱은 사용자를 위한 앱으로도 작동하고 개발자가 자신의 앱에서 액세스할 수 있는 용도로도 작동.
Mobile Architecture Overview 2017
Architecture Android Architecture
Android Activity Lifecycle
• Activity 인스턴스 수명 주기의 특정 단계에 부합하는 Call Back 메서드를 호출하여 해당 인스턴스 내 코드를 실행함.
• 액티비티를 시작하는 순차적인 Call Back 메서드가 있으며, 액티비티를 소멸시키는 순차적인 Call Back 메서드가 있음.
• 액티비티 수명 주기에 맞는 적절한 Call Back 메서드를 구현하여 앱이 제대로 동작하도록 보장하게 함.
사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 충돌하지 않도록 해야함.
사용자가 앱을 활발하게 사용하지 않는 경우, 소중한 시스템 리소스를 소비하지 않도록 해야 함.
사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태를 손실하지 않도록 해야 함.
화면이 가로 방향과 세로 방향 간에 회전할 경우, 충돌하거나 사용자의 진행 상태를 손실하지 않도록 해야함.
Mobile Architecture Overview 2017
Architecture Android Architecture
Android Activity Lifecycle
메서드 설명
onCreate()
• 액티비티가 처음 생성되었을 때 호출.
• 일반적인 설정을 모두 수행. (뷰 생성, 목록에 데이터 바인딩하기 등.)
• 액티비티의 이전 상태를 포함한 번들 객체가 전달됨.
• 뒤에는 항상 onStart()가 호출됨.
onRestart()
• 액티비티가 중단되었다가 다시 시작되기 직전에 호출.
• 뒤에는 항상 onStart()가 호출됨.
onStart()
• 액티비티가 사용자에게 표시되기 직전에 호출됨.
• 액티비티가 전경으로 나오면 onResume()이 뒤에 호출,
• 액티비티가 숨겨지면 onStop()이 뒤에 호출됨
onResume()
• 액티비티가 시작되고 사용자와 상호작용하기 직전에 호출.
• 이 시점에서 액티비티는 스택의 맨 위에 있으며, 사용자가 정보를 확
인.
• 이 뒤에는 항상 onPause()가 호출됨.
onPause()
• 시스템이 다른 액티비티를 재개하기 직전 호출됨.
• 일반적으로 데이터를 유지하기 위해 저장되지 않은 변경 사항을 커
밋함.
• CPU를 소모하는 작업을 중단하는 등의 여러 가지 용도에 사용됨.
• 무슨 일을 하든 매우 빨리 끝내야 함.
• 액티비티가 다시 전경으로 돌아오면 onResume()이 뒤에 호출됨.
• 액티비티가 사용자에게 보이지 않게 되면 onStop()이 뒤에 호출됨.
onStop()
• 액티비티가 더 이상 사용자에게 표시되지 않게 되면 호출됨.
• 액티비티가 소멸되거나, 다른 액티비티가 재개되어 덮고 있음.
• 액티비티가 다시 사용자와 상호작용하면 onRestart()가 뒤에 호출됨.
• 액티비티가 사라지면 onDestroy()가 뒤에 호출됨.
onDestroy()
• 액티비티가 소멸되기 전에 호출됨.
• 액티비티가 받는 마지막 호출.
• 액티비티가 완료되는 중이기 때문(누군가가 여기에 finish()를 호출해
서)일 수도 있고, 시스템이 공간을 절약하기 위해 액티비티의 이 인스
턴스를 일시적으로 소멸시키는 중이기 때문.
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Architecture Layer
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Architecture Layer
Cocoa Touch
• iOS 운영 체제에서 실행되는 애플리케이션을 작성하기위한 UI 프레임 워크.
• 매우 빠른 속도로 실행되도록 컴파일 된 객체 지향 언어 인 Objective-C로 구현 된
클래스를 주로 포함.
• 고유한 유연성을 제공하는 진정한 동적 런타임을 사용.
• Objective-C는 C의 상위 집합이기 때문에 C와 C ++를 Cocoa Touch 응용 프로그램에 쉽게
혼합.
• 멀티 태스킹, 터치 기반 입력, 푸시 알림 및 많은 고급 시스템 서비스에 대한 앱 인프라
제공.
Cocoa Touch
 Storyboards
 Documents
 Gesturing
 Multitasking
 Notifications
 UIKit Framework
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Architecture Layer
Media Layer
• 멀티미디어 경험을 구현하는 데 사용하는 그래픽, 오디오 및 비디오 기술이 포함되어
있음.
• 이 레이어의 기술을 통해 멋지게 보이는 훌륭한 앱을 쉽게 만들 수 있음.
Media Layer
 Graphic Technologies
 Audio Technologies
 Video Technologies
 AirPlay
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Architecture Layer
Core Services Layer
• 앱에 필요한 기본 시스템 서비스가 포함되어 있음.
• Core Foundation 및 Core Framework가 핵심 서비스로, 모든 앱에서 사용하는 기본 유형을
정의하고 Location, iCloud, 소셜 미디어 및 네트워킹과 같은 기능을 지원하는 기술도 제공.
Core Services Layer
 iCloud
 In-App purchase
 SQLite
 Core Data
 Core Location
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Architecture Layer
Core OS Layer
• 다른 고급 기능의 기반이 되는 하위 수준 기능이 포함.
• 비록 우리가 이 기능을 응용 프로그램에서 직접 사용하지는 않지만 프레임 워크에서
사용함.
• 보안 기능을 구현하거나 외부 하드웨어 액세서리와 통신해야 할 때 이러한 기능을 사용.
Core OS Layer
 Bluetooth
 External Accessories
 Accelerator Framework
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Application Lifecycle
홈버튼을 눌렀을 때, 전화가 왔을 때와 같이 앱이 화면상에서
보이지 않는 background 상태, 화면에 올라와 있는 상태인 foreground
등과 같은 상태들에 대한 정의.
State
• Not Running: 앱이 실행되지 않은 상태
• Inactive와 Active 상태를 합쳐서 Foreground 라고 함
• Inactive: 앱이 실행중인 상태 그러나 아무런 이벤트를 받지 않는
상태
• Active: 앱이 실행 중이며 이벤트가 발생한 상태
• Background: 앱이 백그라운드에 있는 상태 그러나 실행되는
코드가 있는 상태
• Suspended: 앱이 백그라운드에 있고 실행되는 코드가 없는 상태
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Application Lifecycle
Call Back Method
• application(_:didFinishLaunching:) - 앱이 처음 시작될 때 실행
• applicationWillResignActive: - 앱이 active 에서 inactive로 이동될 때
실행
• applicationDidEnterBackground: - 앱이 background 상태일 때 실행
• applicationWillEnterForeground: - 앱이 background에서 foreground로
이동 될때 실행 (아직 foreground에서 실행중이진 않음)
• applicationDidBecomeActive: - 앱이 active상태가 되어 실행 중일 때
• applicationWillTerminate: - 앱이 종료될 때 실행
Mobile Architecture Overview 2017
Architecture iOS Architecture
iOS Application Lifecycle
복수의 뷰 컨트롤러가 경우 각각의 뷰 컨트롤러는 자신만의
생명주기를 가짐. 화면상에 등장 할 때, 사라질 때 등 상황에 맞춰서
함수들이 호출.
• viewDidLoad - 해당 뷰컨트롤러 클래스가 생성될 때
(viewWillAppear전에 실행) 실행. Low memory와 같은 특별한 경우가
아니라면 딱 한번만 실행되기 때문에 리소스 초기화에 사용.
• viewWillAppear – View가 화면에 나타나기 직전에 실행.
View가 나타나기 직전에 항상 실행되기 때문에 해당 뷰
컨트롤러가 나타나기 직전마다 일어나는 작업 수행
• viewDidAppear - View가 화면에 나타난 직후에 실행.
화면에 적용될 애니메이션을 그리거나 API로 부터 정보를 받아와
화면을 업데이트 할 때 이곳에서 수행.
지나치게 빨리 애니메이션을 그리거나 API에서 정보를 받아와 뷰
컨트롤러를 업데이트 할 경우 화면에 반영되지 않음.
• viewWillDidDisappear - 뷰 컨트롤러가 화면에 나타난 직전/직후에
실행.
Mobile Architecture Overview 2017
Architecture iOS Architecture
Apple’s MVC Pattern
• MVC 패턴은 사용자에게 보여지는 측면을 담당하는 View 와 데이터에 관한 Model, 그리고 그것들을 관리하는 Controller에 관한 패턴.
• Server Side Application 에서도 많이 사용하지만 UI 계층에서도 자주 사용하는 패턴.
• 개선된 많은 패턴 있음. (MVVM, FLUX 등)
• 애플 iOS 프로그래밍에서 사용하는 MVC 패턴은 View의 수명주기에 깊게 관여하기 때문에 많은 View Controller를 작성하도록 권장함.
• 비즈니스 로직과 데이터 변환을 Controller 에서 담당하며, View에 작업량을 줄이는 데는 효과 없음.
• 컨트롤러는 View의 로직을 위임 받아 Model 과 View 간의 데이터 전송을 담당.
View Controller Model
Notifies
Owns and Updates
View Life Cycle
UIView UIViewController
Mobile Architecture Overview 2017
Architecture iOS Architecture
Lifecycle 비교
onCreate
onStart
onResume viewWillAppear
viewDidLoad
onPause
onStop
onDestroy
viewWillDisapear
viewDidUnload
dealloc
onRestartRunning Running
Activity start,
Xml layout loading.
Activity visible to user
Partially visible
Activity no longer visible
Activity is destroyed
View loaded from nib file
View appear to user
View disappear to user
View release from memory
Android iOS
Mobile Architecture Overview 2017
Architecture Hybrid Architecture
Cordova Architecture
하드웨어 지원 플러그인
• Accelerometer : 가속도 센서
• Camera
• Capture : 화면 캡처
• Compass : 나침반
• Connection
• Contacts
• Device
• Events
• File
• Geolocation
• Globalization
• InAppBrowser
• Media
• Notification
• Splashscreen : 시작화면
Mobile Architecture Overview 2017
Architecture Hybrid Architecture
Cordova Architecture
• 네이티브 모바일 애플리케이션 컨테이너 안에
WebView.
• WebView 로딩 될 오프라인 HTML 기반의 웹
애플리케이션을 로딩.
• 웹 애플리케이션은 전통적인 웹 개발 방식을
사용하며, Cordova JavaScript Library를 적재함.
• Hot Code Push 라는 방식으로 웹 애플리케이션에 대한
부분을 네트워크를 통해 업데이트 가능 함.
Hardware
Operating System (iOS, Android)
Cordova Library
(libs/cordova-*.jar)
Custom Library
(libs/*.jar)
Native Code
(src/*.java)
Native Mobile Application
WebView (HTML Rendering Engine)
Web App
(assets/www/index.htm, *.css, *.js)
HTML, CSS, Resources
JavaScript
Cordova JavaScript Interface
(assets/www/cordova.js) Direct JavaScript API
Cordova JavaScript API
Cordova Native API
OS API
Mobile Architecture Overview
Enterprise Solution
MDM
MAM
MEAP
MADP
MCM
Mobile Architecture Overview 2017
Enterprise Solution MDM
• 직원의 생산성을 유지하는 동시에 기업 정책을 위반하지 않도록 통제하는 솔루션.
• 주로 기업 데이터 분리, 전자메일 보안, 기업 문서 보안, 기업 정책 시행 등을 다양한 휴대용 장치에 적용.
• On-premise 나 클라우드 기반으로 구현
MDM (Mobile Device Management)
Mobile Architecture Overview 2017
Enterprise Solution MDM
• 직원의 생산성을 유지하는 동시에 기업 정책을 위반하지 않도록 통제하는 솔루션.
• 주로 기업 데이터 분리, 전자메일 보안, 기업 문서 보안, 기업 정책 시행 등을 다양한 휴대용 장치에 적용.
• On-premise 나 클라우드 기반으로 구현
Mobile Device Management
• 하나의 플랫폼으로 모든 모바일 디바이스를 관리.
• 시간적, 공간적, 논리적, 그룹별 디바이스 정책을 설정.
• 디바이스 관리, 리포팅, 시스템 업데이트, 설치에 대하여 중앙 관리
• 원격 디바이스 설정, 잠금, 초기화 기능
• 앱 배포와 디바이스 잠금.
• 디바이스 및 애플리케이션 사용 제한
• 제조사가 아니면 솔루션 개발의 어려움.
Mobile Architecture Overview 2017
Enterprise Solution MDM
Mobile Device Management 기능
• 정책 적용
MDM 사용자에게 여러 종류의 정책을 적용할 수 있음.
• 개인 정책
기업 환경에 맞게 맞춤 설정이 가능.
• 디바이스 플랫폼
Android, iOS, 윈도우, 블랙베리 디바이스에 대한 고급 관리
정책.
• 기업 데이터를 사용하는 디바이스에 대한 규정 정책/룰을
설정하는 기능.
• 기업 네트워크를 위한 VPN에 대한 설정 기능.
• 디바이스에서 사용할 수 있는 애플리케이션 목록 관리 및
제한
• 미리 정의 될 수 있는 Wi-Fi 와 핫 스팟 설정 기능.
• 탈옥 / 루팅 등 디바이스 해킹 탐지
• 원격 기업 데이터 삭제.
• 원격 디바이스 데이터 삭제.
Mobile Architecture Overview 2017
Enterprise Solution MAM
MAM (Mobile Application Management)
• 회사에서 제공하는 스마트폰, 태블릿 상의 비즈니스와 관계되는 애플리케이션에 대한 액세스를 제공, 제어하는 솔루션.
• 비즈니스 애플리케이션의 세부적인 제어를 통해 기업의 데이터를 보호.
• 기업 모빌리티 관리 제품군에 포함
Mobile Architecture Overview 2017
Enterprise Solution MAM
• 기업 앱 스토어를 통해 모바일 애플리케이션을 프로비저닝, 업데이트 및 제거를 제어하고, 성능 및 사용을 모니터링하며
데이터를 원격에서 제거 하는 기능을 제공.
• 다음과 같은 핵심 기능을 제공.
앱 배포 (기업 앱스토어)
앱 업데이트
성능 모니터링
사용자 인증
오류 로그 리포팅
사용자 & 그룹 접근 통제
애플리케이션 버전 관리
애플리케이션 형상 관리
푸시 서비스
리포팅 과 추적
사용자 분석
이벤트 관리
애플리케이션 빌드
Mobile Application Management 기능
Mobile Architecture Overview 2017
Enterprise Solution MAM
• MDM은 디바이스에 초점이 되어 있다면 MAM은 애플리케이션을 목표로 함.
• 두개가 포함되는 솔루션 형태도 있음.
Mobile Device Management 과 Mobile Application Management
• MDM
- OTA
- 원격 설정
- 디바이스 보안
- 백업/복구
- 네트워크 사용과 지원
- 원격 잠금과 삭제
- 소프트웨어 설치
• MAM
- 앱 배포
- 앱 보안
- 앱 업데이트
- 사용자 인증
- 사용자 인가
- 앱 버전 체크
- 푸시 서비스
- 리포팅과 트레킹.
Mobile Architecture Overview 2017
Enterprise Solution MEAP
• 모바일 애플리케이션 개발을 쉽게 할 수 있도록 가능케 하는 제품 및 서비스의 모음.
• 2008년 가트너 보고서에서 “멀티 채널 액세스 게이트웨이“로 변경.
• 배포 뿐 만 아니라 라이프 사이클 전반에 걸쳐 장치, 네트워크 및 사용자 그룹의 다양성을 관리함으로써 모바일 소프트웨어
개발의 어려움을 해결함.
• 모바일 애플리케이션을 한번 개발하고 기본 비즈니스 로직을 변경하지 않고 다양한 모바일 장치에 배포 가능.
• 플랫폼 애플리케이션은 단일 인프라에서 애플리케이션을 배포 함.
• 사용자의 규모에 맞춰 조정 하고 온라인 및 오프라인에서도 사용 가능하게 함.
• 높은 수준의 개발언어와 쉬운 개발 템플릿을 제공함.
• 모바일 애플리케이션의 개발 기간을 단축하며,
배포에 필요한 프로그래밍 지식이 상대적으로
적게 필요함.
MEAP (Mobile Enterprise Application Platform)
Mobile Architecture Overview 2017
Enterprise Solution MEAP
구조
• 모바일 미들웨어 서버와 클라이언트 애플리케이션의 두 부분으로 구성.
• 미들웨어 서버는 시스템의 통합, 보안, 통신, 확장성, 크로스플랫폼 지원 등을 처리.
• 미들웨어 서버에 저장되는 데이터는 없으며, Back-End 시스템에서 모바일 애플리케이션 데이터를 관리.
• 애플리케이션을 개발하고 조정할 수 있는 모바일 Configuration/개발 도구가 제공.
• 모바일 애플리케이션은 설치형 앱 이나 브라우저에서 Rendering 되는 방식을 제공함.
• 애플리케이션의 복잡성, 장치지원, 사용자 경험, 요구 사항 및 네트워크 가용성, 애플리케이션 가용성 측면의 기능을 제공.
특징과 기능
• 여러 모바일 장치와 운영체제를 지원하기 위하여, 여러가지 코드를 유지하지 않아도 됨.
• 통합연결, 보안, 앱 관리가 지원되는 모바일 미들웨어 서버가 포함됨.
• 사용자 정의형 앱을 개발하는 경우 코드로 작성하지 않고 4GL기술을 사용함. (이클립스와 같은 업계 표준 IDE에 플러그인
형태로 도구가 제공)
• JavaScript UI 프레임워크나 PhoneGap (Cordova), Appcelerator와 같은 모바일 컨테이너가 IDE에 통합되어 있음.
단점
• 복잡한 UI를 지원하지 못하고, 신규 버전에 대한 지원이 느리며, 최적화 지원이 미흡.
• 솔루션에서 지원하지 못하는 부분은 개별 SI가 필요.
Mobile Enterprise Application Platform
Mobile Architecture Overview 2017
Enterprise Solution MEAP
Mobile Enterprise Application Platform 도입 사례 – SAP SYBASE UNWIRED PLATFORM
기업명 MEAP 솔루션 특징 적용사례
Antenna Software AMP
• iOS, 안드로이드, 블랙베리, 윈도모바일, 심비안 등 지원
• 시장, 기술 선도 기업으로 평가(Gatner)
KT 모바일 오피스
SAP (Sybase)
SUP (Sybase Unwired
Platform)
• iOS, 윈도모바일, 블랙베리 지원
• Visual Studio, Eclipse 등 보편적 IDE를 통합
삼성 SDS 미국법인
한국IBM
SPoSA (Smartphone
oriented Service
Architecture)
• iOS, 안드로이드, 윈도모바일 지원
• 셀라돈(Celadon, 위치 인식 기반 플랫폼)에 기반 (IBM, 정통부 공동
투자)
• 와이파이 LBS, 디바이스 콜레보레이션 등 다양한 추가 기능 제공
아모레퍼시픽 모바
일 그룹웨어, SKT 파
일럿 프로젝트 등
Oracle
ADF (Application
Development Framework)
Mobile
• Web, Native 앱 (제한적) 지원
• MVC 아키텍처
• AJAX 기반 클라이언트 UI 컴퍼넌트
메리츠 금융정보 서
비스와 전략적 제휴
WorkLight WorkLight Platform
• iOS, 안드로이드, 블랙베리 지원
• Hybrid Coding IDE
롯데카드 ‘스마트 롯
데’ (고객용 모바일 서
비스)
Mobile Architecture Overview 2017
Enterprise Solution MEAP
Mobile Enterprise Application Platform 도입 사례 - 신한은행
Mobile Architecture Overview 2017
Enterprise Solution MADP
• 기업용 모바일 애플리케이션 개발 플랫폼.
• 모바일 애플리케이션 개발을 할 수 있는 모든 서비스와 제품을 포함하는 그룹
• 다양한 모바일 장비, 사용자 그룹 및 네트워크 등을 기반으로 하는 모바일 소프트웨어 개발 어려움을 해소.
• 배포 뿐만 아니라 모바일 애플리케이션 전체 생명 주기 동안 다양한 장치를 관리.
• 일반적으로 모바일 클라이언트 애플리케이션과 모바일 미들웨어 서버로 구성됨.
• 미들웨어 서버는 데이터를 저장하지 않고, 보안, 시스템통합, 확장성, 통신, 플랫폼간 지원 등을 통해 데이터를 관리.
• 일반 사용자를 대상으로 하는 앱을 제공해야 하는 경우 많이 선택됨..
MADP (Mobile Application Development Platform)
Mobile Architecture Overview 2017
Enterprise Solution MADP
특징
• 엔터프라이즈와의 모바일 인터페이스 단일 포인트
• 모바일 애플리케이션 전반의 서비스 재사용 성.
• 엔터프라이즈 서비스 발견.
• 모바일 친화적 인 모델링.
• IDE 기반 애플리케이션 개발 – 미들웨어 모델링 Back End 통합.
• 앱 데이터 경로에 대한 단일 보안 전략을 배포하는 데 도움이
됨.
• 엔터프라이즈 이동성을 위한 캐시 원활한 동기화 지원.
• 장치 대기열 가시성 및 채널 제어 향상
Mobile Application Development Platform 동향
Mobile Architecture Overview 2017
Enterprise Solution MADP
• 기업 모빌리티의 기술 발전과 함께 MEAP는 MADP로 발전되고 있음.
• 대부분의 모바일 앱 개발 플랫폼 (MADP)은 디자인 프레임 워크, 백엔드 통합, 미들웨어 지원 등과 같은 서비스를 소비자 및
엔터프라이즈 지향 앱 모두에 제공함.
• 오늘날의 MADP는 최대한 많은 기능이 추가되었음.
• MADP가 MEAP, MDM / MAM 및 응용 프로그램 개발을 통해 제공되는 서비스의 조합을 포함 해야하는 시간이 필요함.
Mobile Application Development Platform 동향
Mobile Architecture Overview 2017
Enterprise Solution MCM
• 휴대 전화, 스마트 폰 및 PDA와 같은 모바일 장치에 콘텐츠 및 서비스를 저장하고 전달할 수 있는 콘텐츠 관리 시스템 (CMS).
• 개별 시스템으로 동작하거나 멀티 채널 컨텐츠 전달이 가능한 대형 컨텐츠 관리 시스템의 기능 또는 모듈, 애드온 형태로 제공.
• 모바일 컨텐츠 전송은 가변적인 디바이스 용량, 작은 화면 크기, 제한된 무선 대역폭, 작은 스토리지 용량 및 비교적 약한
디바이스 프로세서를 포함하는 모바일 환경 고유의 제한 사항을 광범위하게 가지고 있음.
• 모바일 장치가 점점 유비쿼터스화되고 복잡해짐에 따라 요구 증가.
• 처음에는 벨소리, 게임, 문자 메시지, 뉴스 및 기타 관련 콘텐츠가 포함 된 B2C 모바일 시장에서 출발.
• B2B 및 B2E (B2B) 상황에서도 뿌리를 내리고 있기 때문에 기업의 비즈니스 파트너 및 모바일 관련 인력에 대한 효율적인 정보 및
기능을 제공.
MCM (Mobile Contents Management)
Mobile Architecture Overview 2017
Enterprise Solution MCM
Multi-channel content delivery
• 사용자는 중앙 컨텐츠 저장소를 관리하는 동시에 휴대폰, 스마트 폰, 태블릿 및 기타 모바일 디바이스와 같은 모바일
디바이스로 컨텐츠를 전달할 수 있음. 콘텐츠는 장치 별 스타일을 적용 할 수 있는 원시 형태로 저장.
Content access control
• 권한, 인증 및 각각의 컨텐츠에 대한 액세스 승인이 포함됨. 대부분의 경우 다운로드 제어, 특정 사용자에 대한 삭제, 시간 별
액세스가 포함.
• 인증을 위해서 사용자 ID와 패스워드를 가진 기본 인증을 가져야 하며 보안 강화를 위해 IP 인증 및 모바일 장치 인증을 지원함.
Mobile Contents Management Features
Mobile Architecture Overview 2017
Enterprise Solution MCM
Specialized templating system
• 기존의 웹 콘텐츠 관리 시스템은 소수의 웹 브라우저에서만 템플릿을 처리하지만 모바일 CMS 템플릿은 용량과 제한이 다른
다양한 대상 장치에 맞춰야 함.
• 템플릿을 적용하는 데는 다중 클라이언트 및 다중 사이트의 방법이 있음.
• 멀티 클라이언트 접근 방식을 사용하면 동일한 도메인에 있는 사이트의 모든 버전을 볼 수 있으며 템플릿은 보기에 사용 된
기기를 기반으로 제공.
• 다중 사이트 접근 방식은 모바일 사이트를 타겟팅 된 하위 도메인으로 제공. (m.ktds.com)
Location-based content delivery
위치 기반 콘텐츠 전달은 정보, 광고,지도, 길 찾기 및 뉴스와 같은 대상 콘텐츠를 현재 물리적 위치를 기반으로 모바일 장치에
제공.
Mobile Contents Management Features
Mobile Architecture Overview 2017
Enterprise Solution Mobile App Development Trend in 2017
• 모바일 앱 개발은 오늘날 스마트 폰에서만 일어나지는 않습니다. 이제는 웨어러블, 스마트 카, 집과 같은 다른 장치에서
사용하기 위해 개발.
• Survey Monkey는 2017 년까지 모바일 앱의 전세계 매출이 962.5 %로 증가 할 것으로 예측하고 있음.
• 다른 보고서에 따르면 기기 별로 모바일 앱 사용률이 증가하면 2020 년까지 업계 성장이 1,000 억 달러를 상회 할 것으로 예상함.
Increase in progressive web apps (PWAs)
• Progressive 웹 앱은 모바일 앱처럼 느껴지도록 디자인 된 웹 사이트.
• 인터넷상의 정보에 액세스하기위한 모바일 장치의 사용이 늘어남에 따라 이들이 중소기업 모두에게 인기가 됨.
• PWA는 Google 및 기타 검색 엔진이 모바일 친화적 웹 사이트에 우선 순위를 부여하는 모바일 기반 검색 결과 알고리즘을 도입함.
• PWA가 제공 할 수 있는 경제성과 사용자 경험 향상으로 중소기업 응용 프로그램 개발.
2017년 모바일 개발 트렌드
Mobile Architecture Overview 2017
Enterprise Solution Mobile App Development Trend in 2017
Increase in location based services
• 위치 추적 및 탐색 도구를 비롯한 위치 기반 서비스 제공에 더 많은 초점. 이 추세는 2017 년에 더 증가 할 것으로 예상됨.
• 위치 기반 서비스는 거래 및 정보를 실시간으로 제공하기 위해 더욱 발전 할 것으로 예상 됨.
• 소매업, 실내 매핑, 내비게이션, 보안 및 기타 다양한 분야의 기능을 제공하도록 구현 할 수 있음.
Shift to streaming technology
• 넷플릭스, 유튜브 RED, 아마존 프라임의 인기가 나아지기 만한다면 소비자들은 내년에 스트리밍 기술을 선호하게 될 것이다.
• 소비자 행동의 변화는 전통적인 케이블 TV에 가입하는 것과는 대조적으로 콘텐츠를 스트리밍 할 수 있는 경제성과 편리 성
때문에 주로 발생함.
• 스트리밍 서비스에 대한 수요가 증가함에 따라 비디오 스트리밍 애플리케이션에 대한 수요가 증가.
• 수요는 2017 년을 정점으로 예측.
2017년 모바일 개발 트렌드
Mobile Architecture Overview 2017
Enterprise Solution Mobile App Development Trend in 2017
Increased use of augmented reality in apps
• Augmented Reality (AR) 앱은 한 때는 변칙적 인 것으로 여겨졌으나 웨어러블 기기와 스마트폰이 늘어남에 따라 AR 사용 증가.
• 웨어러블 플래폼은 AR 도구를 이전에 생각했던 것보다 더 생산적이고 효과적으로 적용 할 수 있는 환경을 제공함.
Integration of machine learning apps
• Facebook, Google, IBM 및 Microsoft와 같은 기술 회사는 인공 지능과 기계 학습에 투자하고 있음.
• 기술 대기업은 인간 개입없이 운영되는 소비자 서비스로의 전환을 위한 토대를 마련하고 있음.
• 많은 사람들 인공지능 및 기계학습 서비스를 제공 할 것이라고 믿고 있음.
• 인공 지능과 기계 학습은 2017년에 관련 모바일 앱의 개발을 이끌어 낼 것이며, 사용자 환경을 개선하고 선호도 또는 위치에
따라 소비자에게 향상된 서비스를 제공하게 됨.
2017년 모바일 개발 트렌드
Mobile Architecture Overview 2017
Enterprise Solution Mobile App Development Trend in 2017
Shift to streaming technology
• 넷플릭스, 유튜브 RED, 아마존 프라임의 인기가 나아지기 만한다면 소비자들은 내년에 스트리밍 기술을 선호하게 될 것이다.
• 소비자 행동의 변화는 전통적인 케이블 TV에 가입하는 것과는 대조적으로 콘텐츠를 스트리밍 할 수 있는 경제성과 편리 성
때문에 주로 발생함.
• 스트리밍 서비스에 대한 수요가 증가함에 따라 비디오 스트리밍 애플리케이션에 대한 수요가 증가.
• 수요는 2017 년을 정점으로 예측.
Increased use of augmented reality in apps
• Augmented Reality (AR) 앱은 한 때는 변칙적 인 것으로 여겨졌으나 웨어러블 기기와 스마트폰이 늘어남에 따라 AR 사용 증가.
• 웨어러블 플래폼은 AR 도구를 이전에 생각했던 것보다 더 생산적이고 효과적으로 적용 할 수 있는 환경을 제공함.
2017년 모바일 개발 트렌드
Mobile Architecture Overview 2017
Enterprise Solution Mobile App Development Trend in 2017
Integration of machine learning apps
• Facebook, Google, IBM 및 Microsoft와 같은 기술 회사는 인공 지능과 기계 학습에 투자하고 있음.
• 기술 대기업은 인간 개입없이 운영되는 소비자 서비스로의 전환을 위한 토대를 마련하고 있음.
• 많은 사람들 인공지능 및 기계학습 서비스를 제공 할 것이라고 믿고 있음.
• 인공 지능과 기계 학습은 2017년에 관련 모바일 앱의 개발을 이끌어 낼 것이며, 사용자 환경을 개선하고 선호도 또는 위치에
따라 소비자에게 향상된 서비스를 제공하게 됨.
Security will become a critical issue
• 기술이 급속도로 급속히 증가함에 따라 보안 위협도 증가함.
• 더 많은 사람들이 다양한 작업을 위해 스마트 폰을 사용함에 따라 민감한 개인 데이터를 저장하고 휴대 전화에 공유함에 따라서
스마트 폰의 보안은 더욱 중요해질 것으로 예상됨.
• 스마트 폰에서 중요한 정보와 개인 정보를 공유하고 있음에도 불구하고 많은 사람들이 휴대 전화의 보안을 심각하게 생각하지
않음.
• 개발자는 자신의 앱에 내장 된 더 많은 보안 기능을 제공 할 예정임.
2017년 모바일 개발 트렌드
Mobile Architecture Overview 2017
Enterprise Solution Mobile App Development Trend in 2017
Growth of Internet of Things (IoT)
• 상호 연결성을 제공하는 앱이 점점 인기를 얻고 있음.
• 적용 분야는 2017 년에 더욱 증가 할 것으로 예상되며 교육, 건강, 스마트 홈, 보안 및 운송과 같은 분야는 IoT의 적용을 실험하고
있음.
• 데이터 공유의 증가와 장치가 통신 할 수 있는 더 복잡한 플랫폼이 필요하게 됨.
Improved design
• 사용자 경험은 앱 디자인 및 개발의 주요 원동력 중 하나.
• 결과적으로 앱 개발자는 사용자에게 시각적으로 호소력 있는 앱을 제공하는 데 중점을 두게 됨.
• 2017 년에 주목할 디자인 트렌드에는 Splash 스크린, Parallels 그래픽, 분할 스크린, 미세 상호 작용 및 그리드 기반 디자인이
포함됨.
Integration of mobile payments
• 더 많은 사람들이 정보 검색 및 작업 수행에 휴대폰을 사용함에 따라 개발자는 모바일에서 결제 기능을 통합하기 시작했음.
• 구매자는 앱에서 거래를 완료 할 수 있으며 웹 사이트를 방문하지 않아도 됨.
• 개발자는 모바일 지불을 용이하게 하는 안전한 방법을 제공해야 함.
2017년 모바일 개발 트렌드
Mobile Architecture Overview
Backend Architecture
Enterprise Architecture
Micro Service Architecture
OAUTH2.0
Push Server
Redhat AeroGear
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
Microsoft Architecture
• Microsoft 의 Cloud 서비스를 이용한 모바일 Backend Architecture
• Mobile Front-End 는 Xamarin 과 PhoneGap, Sencha를 통해 하이브리드로 구성.
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
• 전통적인 3-Tier 구조의 Back end Architecture
• Cache 구조가 존재함.
• 믿을 수 없는 서비스나 관리 할 수 없는 서비스
연동은 Agent 구성.
• Cross Cutting Module.
Microsoft Architecture
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
• Microsoft Intune MAM 솔루션을 기반으로 하는 Architecture.
• 자사 솔루션인 Office와 Exchange 서버 등 엔터프라이즈 제품군과의 연계.
• 생체 인증 (FIDO)
Microsoft Architecture
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
• IBM의 모바일 Architecture
• 자사의 클라우드 서비스인 BlueMix 와의 통합으로 IoT, AI, BigData 연계 용이.
• BlueMix SDKs 를 이용하여 플랫폼 서비스 이용.
• 오픈소스의 적극적인 이용.
IBM Architecture
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
• IaaS, PaaS, SasS의 체계적인 구축으로 쉽게 애플리케이션을 개발할 수 있는 환경 제공.
• SaaS를 통해 API Economy라는 개념을 추구
• IaaS, SDN 등을 통한 네트워크 추상화 레이어.
IBM Architecture
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
• 기존 SOA(Service Orienter Architecture)의 Gateway와 SOAP 통신을 통해 Mobile Gateway Interface 제공
• ERP 같은 레거시 환경으로의 접근을 위한 모빌리티 아키텍처
Oracle Architecture
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
• 오라클의 Mobile Application Development Framework
• Cordova 와 HTML, JS 기반
• 쉽게 기존 시스템과의 연동하여 모빌리티 제공.
Oracle Architecture
Mobile Architecture Overview 2017
Backend Architecture Enterprise Architecture
• Oracle Mobile Cloud 서비스 Architecture.
• Open Source 와 Native Application Development Framework 제공.
• 클라우드 방식과 온프리마이즈 방식을 모두 제공.
Oracle Architecture
Mobile Architecture Overview 2017
Backend Architecture Micro Service Architecture
• 응집된 구조의 서버 사이드 구조.
• 새로운 서비스 추가 시 모바일에서 연동되는 Endpoint 증가.
• 서비스 스케일 조정의 어려움.
• 글로벌 서비스의 어려움.
전통적인 모바일 Architecture
Mobile Architecture Overview 2017
Backend Architecture Micro Service Architecture
• 전통적인 서버사이드 아키텍처
• 성능이나 효율은 좋으나 새로운 서비스 개발의
어려움이 존재함.
• 사이드 이펙트 발생 함.
• 모듈 재활용성이 떨어짐
• 규모 조절의 어려움이 있음
• 시스템 연동의 어려움이 있음
• 새로운 기술 적용의 어려움.
Monolithic Architecture
Mobile Architecture Overview 2017
Backend Architecture Micro Service Architecture
• 모바일 서비스 측면의 Micro Service Architecture.
• 복잡한 서버 사이드 로직을 개별적인 Micro Service 로 분리.
• 통합적인 API Gateway를 통해 각각의 서비스 API를 Wrapping.
• Cross-Cutting Concern 한 기능을 통합적인 API 관리.
• 서비스 Version 별 관리 가능
MSA (Micro Service Architecture) for Mobile
Mobile Architecture Overview 2017
Backend Architecture Micro Service Architecture
• OOP와 같은 모듈화가 뛰어난 방법을 사용하더라도 쉽게 분리 될 수 있는 모듈로 작성하기 힘듬.
• 이러한 요구사항은 실제 애플리케이션 설계와 개발에서 자주 발생.
• 이를 횡단 관심(crosscutting concerns)이라고 함.
• 핵심 기능을 제외한 중간중간 삽입되어야 될 기능들 (로깅, 보안, 트랜잭션, 예외처리)
• 이에 대비해서 해당 시스템의 핵심 가치와 목적이 그대로 드러난 관심 영역을 핵심 관심(core concerns)이라고 부름.
• 이런 종류의 핵심 관심사는 기존의 객체지향 분석/설계(OOAD)를 통해 쉽게 모듈화와 추상화가 가능.
Crosscutting concerns
Mobile Architecture Overview 2017
Backend Architecture Micro Service Architecture
• 최신 서버사이드 아키텍처
• 새로운 서비스 개발의 용이함.
• 사이드 이펙트가 감소.
• 모듈 재활용성이 높아짐.
• 규모 조절 용이하며, 클라우드 기술의 발전과 함께 더욱
발전.
• 쉽고 가벼운 프로토콜의 사용으로 시스템 및 서비스간의
연동이 용이해짐.
• 서비스 별 개별적인 기술 사용 가능. (Polyglot)
• Spring Framework 및 대부분의 클라우드 서비스에서
아키텍처 지원 용이함.
Micro Service Architecture
Mobile Architecture Overview 2017
Backend Architecture Micro Service Architecture
SaaS 앱을 만들기 위한 방법론.
한국어 사이트 : https://12factor.net/ko/
• 설정 자동화를 위한 절차(declarative) 를 체계화 하여, 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화 해야
함.
• OS에 따라 달라지는 부분을 명확히 하고, 실행 환경 사이의 이식성을 극대화 해야 함.
• 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리가 필요 없어야 함.
• 개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능해야 함.
• 툴, 아키텍처, 개발 방식을 크게 바꾸지 않고 확장(scale up) 할 수 있어야 함.
• 어떤 프로그래밍 언어로 작성된 앱에도 적용할 수 있고 백엔드 서비스(데이터베이스, 큐, 메모리 캐시 등)와 다양한 조합으로
사용 할 수 있음.
12 Factors
Mobile Architecture Overview 2017
Backend Architecture Micro Service Architecture
1. 코드베이스 : 버전 관리되는 하나의 코드베이스와 다양한 배포
2. 종속성 : 명시적으로 선언되고 분리된 종속성
3. 설정 : 환경(environment)에 저장된 설정
4. 백엔드 서비스 : 백엔드 서비스를 연결된 리소스로 취급
5. 빌드, 릴리즈, 실행 : 철저하게 분리된 빌드와 실행 단계
6. 프로세스 : 애플리케이션을 하나 혹은 여러 개의 무 상태(stateless) 프로세스로 실행
7. 포트 바인딩 : 포트 바인딩을 사용해서 서비스를 공개함
8. 동시성(Concurrency) : 프로세스 모델을 사용한 확장
9. 폐기 가능(Disposability) : 빠른 시작과 graceful shutdown을 통한 안정성 극대화
10. dev/prod 일치 : development, staging, production 환경을 최대한 비슷하게 유지
11. 로그 : 로그를 이벤트 스트림으로 취급
12. Admin 프로세스 : admin/maintenance 작업을 일회성 프로세스로 실행
12 Factors
Mobile Architecture Overview 2017
Backend Architecture OAUTH 2.0
인증
• 어떤 사람이나 사물이 실제로 신고된 바로 그 사람(또는 바로 그 것)인지를 판단하는 과정.
• 개별 또는 인터넷을 포함한 공공 네트웍에서의 인증은 대개 로그온시 암호의 사용을 통해 이루어짐.
• 암호를 알고 있는 사람은 일단 믿을 만한 사용자라고 간주.
• 사용자는 꼭 사람을 의미하는 것은 아니며 시스템이나 애플리케이션을 대상으로 할 수 있음.
• 자금 교환 등이 수반되는 중요한 거래에서 이 시스템의 약점은, 암호가 종종 도난 당하거나, 우연히 알려지거나 또는 잊혀질 수
있다는데 있음.
인가
• 시스템이나 그 내부의 리소스에 대한 행위를 정의하고 그 행위에 대한 권리
• 인증을 통하여 사용자를 확인하고 그 사용자의 권한을 인가함.
인증과 인가
Mobile Architecture Overview 2017
Backend Architecture OAUTH 2.0
OAuth 인증 수행 과정에는 다음과 같은 역할 모델이 존재.
자원서버 (Resource Server)
보호되어야 할 데이터나 이미지와 같은 자원들을 제공하는 서버를 말한다. 보통 Restful-API를 통해 제공되며 OAuth 를 통해
보호되야 하는 대상을 뜻함.
자원 소유자 (Resource Owner)
자원서버에서 제공되는 데이터의 실제 소유자를 뜻한다. 사용자의 이미지나 데이터들을 사용자 자신만이 사용 할 수 있거나
위임할 수 있는 권한 주체.
클라이언트 (Client)
자원에 대한 소유자를 대신 하여 자원서버를 통해 제공되는 데이터나 미디어에 접근을 위임 받는 Application이나 시스템을 뜻함.
권한서버 (Authorization Server)
자원서버에서 제공되는 자원 소유자의 데이터나 미디어에 접근하기 위한 토큰을 발행하는 OAuth 인증을 수행하는 서버이다. 인증
과정에서 명시적/묵시적으로 사용자의 동의를 얻어야 함.
역할 모델
Mobile Architecture Overview 2017
Backend Architecture OAUTH 2.0
Client Credential Grant Flow
Client Credentials Grant Flow 방식은 해당 자원 서버에 대한 자원에 대해 사용 권한을 위임 받는 경우에 사용. 다시 말해 사용자를
대신하는 것이 아닌 시스템이나 Application을 대신하는 경우에 사용.
Client Credentials Grant Flow 방식은 사용자 정보를 필요로 하지 않음. 사용자에 상관없이 Access Token을 요청.
Client Credentials Grant Flow 방식은 Client 의 인증정보만을 가지고 인증하며, Access Token 발행을 위해 HTTP Basic Authentication 헤더와
POST 파라미터를 사용하여 ‘client_id’, ‘client_secret’, ‘grant_type’ 의 정보를 넘겨 인증하게 된다.
Grant Flow
Mobile Architecture Overview 2017
Backend Architecture OAUTH 2.0
Resource Owner Password Credential Grant Flow
Resource Owner Password Credentials Grant Flow 방식은 자원 서버에서 제공하는 자신의 자원에 접근 하는 Application에게 권한을 위임하는
경우에 사용하게 된다. 이때 Application은 서드파티에 개발자가 개발한 Application 보다는 자원 서버를 제공하는 업체에서 만든 공식
Application 에 사용할 것을 권고한다. 서드 파티 개발자가 만드는 Application 같은 경우는 사용자 정보와 비밀번호가 노출 될 위험이
있으므로 추천 하지 않는다. Resource Owner Password Credentails Grant Flow 방식은 권한 위임을 하는 시스템이나 Applicaton에 대한 사용자
인증을 단한 번만 하면 된다. 하지만 만료 시간이 있어 Token의 만료가 도래하게 되면 Token에 대한 갱신이 필요하게 된다.
Grant Flow
Mobile Architecture Overview 2017
Backend Architecture OAUTH 2.0
Authorization Code Grant Flow
Authorization Code Grant Flow 방식은 Third-Party 개발자가 모바일이나 웹기반의 어플리케이션을 만드는 경우 권한을 위임하는 경우
사용하게 된다.
Grant Flow
Mobile Architecture Overview 2017
Backend Architecture OAUTH 2.0
Implicit Grant Flow
Implicit Grant Flow는 Third-Party 개발자가 Client를 Javascript 기반으로 개발 할 경우 사용한다
Grant Flow
Mobile Architecture Overview 2017
Backend Architecture Push
• APNS(Apple Push Notification Service)는 애플 사에서 모바일 서비스를 위해 만든 Push 서비스 플랫폼.
• 2009년 6월 17일 iOS 3.0에 포함되어 정식으로 출시됨.
• 서드 파티(3rd-party) 응용 서버로부터 전달된 메시지가 항상 열려 있는 IP 연결을 통해 아이폰, 아이팟, 아이패드 등의 기기로
전달됨.
• iOS 3.0 환경에서는 백그라운드 프로세스를 지원하지 않기 때문에, Polling 방식을 통하여 메시지를 획득할 수 없음.
• APNS에서는 전달하는 Push 메시지는 한쪽 방향으로, 순서대로 메시지를 전달됨.
APNS (Apple Push Notification Service)
Mobile Architecture Overview 2017
Backend Architecture Push
• PNS를 사용하기 위해 애플 장비에 설치된 애플리케이션은 APNS 서버로부터 Device Token을 발급함.
• 발급받은 Device Token을 다시 애플리케이션 서버로 전달.
APNS (Apple Push Notification Service)
Mobile Architecture Overview 2017
Backend Architecture Push Server
• Device Token을 전달받은 애플리케이션 서버는 APNS 서버와 보안 연결.
• 보안 연결 시 할 때 자신을 인증하기 위해 필요한 SSL 인증서(애플리케이션 ID를 이용하여 생성)를 준비되어야 함.
APNS (Apple Push Notification Service)
Mobile Architecture Overview 2017
Backend Architecture Push Server
• 애플리케이션 서버가 Push로 전달해야 할 메시지가 있다면 암호화된 채널(TLS: Transport Layer Security, 구 SSL)을 통해 APNS
서버로 메시지 전송.
• 특정 장비에서 이미 삭제된 애플리케이션으로 Push 메시지를 전달하려고 시도할 경우 해당 장비는 Push 메시지 수신을 거부.
• APNS는 해당 애플리케이션 서버가 연결한 피드백(feedback) 인터페이스를 통하여 삭제된 애플리케이션이 할당 받았던 Device
Token과 시간 정보를 전달한다.
APNS (Apple Push Notification Service)
Mobile Architecture Overview 2017
Backend Architecture Push Server
• C2DM(Cloud to Device Messaging)은 구글의 Android 2.2 버전(Froyo)부터 사용.
• 구글 서비스를 기반으로 Android 마켓을 이용하는 모든 장비에 메시지를 전송.
• Android 운영체제가 설치된 스마트폰에서 유저가 구글 계정으로 로그인해야만 이용이 가능.
• 서드 파티 서버가 간단한 메시지를 Android 애플리케이션으로 전달하는 것을 허용.
• C2DM 서비스는 대용량의 콘텐츠를 전송하도록 설계되지 않음.
• 애플리케이션에 새로운 데이터가 있음을 알려주고, 애플리케이션이 해당 서버에 접속해서 데이터를 전송 받는 구조.
C2DM (Cloud to Device Messaging)
Mobile Architecture Overview 2017
Backend Architecture Push Server
• FCM (Firebase Cloud Messaging)은 서버 응용 프로그램과 모바일 클라이언트 응용 프로그램 간의 메시지 전송, 라우팅 및 대기열
처리를 담당하는 Cross Platform Service.
• FCM은 Google 클라우드 메시징 (GCM)의 후속 제품이며 Google Play 서비스를 기반으로 제작.
• FCM은 메시지를 보낸 사용자와 클라이언트 애플리케이션 사이의 중개자 역할.
• GCM과 달리 FCM을 사용하면 Firebase Console Notifications GUI를 통해 직접 클라이언트 응용 프로그램에 메시지를 전송.
Firebase Overview
Mobile Architecture Overview 2017
Backend Architecture Push Server
• 응용 프로그램 서버는 FCM을 사용하여 단일 장치, 장치 그룹 또는 항목에 가입 한 여러 장치에 메시지를 전송.
• 클라이언트 애플리케이션은 FCM을 사용하여 응용 프로그램 서버의 다운 스트림 메시지 (예 : 원격 알림 수신)에 가입.
• 다운 스트림 메시지가 앱 서버에서 클라이언트 앱으로 전송되면 앱 서버는 Google에서 제공하는 FCM 연결 서버로 메시지를
전송.
• FCM 연결 서버는 차례대로 클라이언트 응용 프로그램을 실행중인 장치로 메시지를 전달.
• 메시지는 HTTP 또는 XMPP (Extensible Messaging and Presence Protocol)를 통해 전송.
• 클라이언트 응용 프로그램은 항상 연결되거나 실행되는 것은 아니기 때문에 FCM 연결 서버는 메시지를 대기열에 넣고
저장하여 다시 연결되고 사용 가능하게 되면 클라이언트 응용 프로그램으로 전송.
Firebase Cloud Messaging in action
Mobile Architecture Overview 2017
Backend Architecture Push Server
• FCM은 다음 자격 증명을 사용하여 응용 프로그램 서버와 클라이언트 응용 프로그램을 식별하고, 이를 통해 메시지 트랜잭션을
인증.
• Sender ID : Firebase 프로젝트를 만들 때 할당되는 고유 한 숫자 값. 메시지를 보낼 수 있는 각 응용 서버를 식별.
• API Key : 응용 서버가 Firebase 서비스에 액세스 인증 시 사용. (서버 키 또는 웹 API Key)
• App ID : FCM에서 메시지를 수신하기 위해 등록하는 클라이언트 애플리케이션 ID.
• Registration Token : 해당 장치의 클라이언트 애플리케이션의 FCM ID.
런타임에 생성. (인스턴스 ID라고도 함). 애플리케이션이 장치에서 실행하여 FCM에 처음 등록 할 때 등록.
FCM에서 메시지를 수신하기 위해 클라이언트 애플리케이션의 인스턴스를 인증.
Firebase Cloud Messaging in action
Mobile Architecture Overview 2017
Backend Architecture Push Server
• 메시지를 전송 하기 위해서는 클라이언트 애플리케이션을 FCM에 등록.
1. 클라이언트 응용 프로그램은 FCM에 접속하여 Sender ID, API Key 및 App ID를 FCM에 전달 후 등록 토큰을 획득.
2. FCM은 클라이언트 애플리케이션에게 등록 토큰을 반환함.
3. 클라이언트 애플리케이션은 Registration Token을 응용 서버에 전달.
• 응용 서버는 Registration Token을 캐시 하여 이후 앱과의 통신을 가속. 이 핸드 셰이크 후 메시지를 받거나 메시지를 전송.
• 클라이언트 애플리케이션이 메시지를 수신하지 않으려는 경우 응용 서버에 등록 토큰을 삭제 요청.
• 클라이언트 애플리케이션이 삭제 되면 FCM이 감지하고 자동으로 응용 서버에 등록 토큰 삭제 요청.
Registration with FCM
Mobile Architecture Overview 2017
Backend Architecture Push Server
• 응용 서버가 클라이언트 애플리케이션에 메시지 단계.
1. 앱 서버는 메시지를 FCM으로 전송합니다.
2. 장치가 사용할 수 없는 상태라면 FCM 서버는 나중에 전송할 수 있도록 대기열에 메시지를 저장. 최대 4 주 동안 보관.
3. 클라이언트 장치를 사용할 수있게 되면 FCM은 해당 장치의 클라이언트 애플리케이션으로 메시지 전달.
4. 클라이언트 애플리케이션은 수신된 메시지를 사용자에게 표시.
5. 앱 서버가 하나의 애플리케이션에 보내는 메시지의 최대 길이는 4kB.
Downstream Messaging
Mobile Architecture Overview 2017
Backend Architecture Push Server
• Topic Messaging는 응용 서버에서 특정 주제에 가입한 애플리케이션으로 메시지를 전송.
• Firebase의 콘솔 알림 GUI를 통해 주제 메시지를 작성하고 전송.
• FCM은 가입 된 클라이언트에게 주제 메시지의 라우팅 및 전달을 처리.
• 날씨 알림, 주식 시세 및 헤드 라인 뉴스와 같은 메시지에 사용. (클라이언트 앱이 앞서 설명한 등록 토큰을 얻은 후에).
1. 클라이언트 애플리케이션이 FCM에 가입 메시지를 전송하여 주제에 가입.
2. 응용 서버는 주제 메시지를 FCM에 보내 분배.
3. FCM은 주제 메시지를 해당 주제에 등록한 클라이언트로 전달.
Topic Messaging
Mobile Architecture Overview 2017
Backend Architecture Push Server
• 서비스 별 에이전트를 통해 비즈니스 로직 구현.
• 큐잉 처리 된 푸시 서비스별 서비스.
• 푸시 서버에 접속하는 커넥션에 대한 풀링.
Push Server
Mobile Architecture Overview 2017
Backend Architecture Firebase
• Polling Adapter와 Message 기반 Adapter 제공
• 범용 API 제공
• 벤더 별 Dispatcher 제공
IBM Push Notification
Mobile Architecture Overview 2017
Backend Architecture Redhat AeroGear
AeroGear Push
• Send push notifications to any device, regardless of platform or network.
• Send push notifications from the Unified Push Server via 7 push networks to any mobile device.
• Android, iOS, Windows, Cordova, Web 플랫폼 지원
• SDK 제공
AeroGear Security
• Integrate with your existing security and authentication infrastructure.
• A small set of classes to provide integration with security providers written in Java, like PicketLink and Apache Shiro.
• SDK 제공
AeroGear Sync
• Real-time, client-server data synchronization with ease and efficiency.
• Full real-time data sync where updates are initiated from both the client and server over a bi-directional channel.
• SDK 제공
AeroGear
Mobile Architecture Overview
Development Skills
Native Skills
Hybrid Skills
Mobile Development Security
Besides Skills
Mobile Architecture Overview 2017
Development Skills Native Skills
• 업계에서 많이 쓰는 스킬을 확인 할 수 있음.
• 기본 플랫폼에 대한 깊은 이해도 필요.
• 오픈소스 소프트웨어에 대한 이해도 필요.
• Front-end 기술 뿐 만 아니라 Back-end 기술의 이해도 필요.
• 스마트폰 및 모바일 디바이스에 대한 깊이 있는 이해도 필요. (연산에 따른 Battery 소모, GPS 기술 등등)
• Enterprise 환경에서의 개발 경험.
Job Posting
Mobile Architecture Overview 2017
Development Skills Native Skills
• 압도적인 스마트폰 판매량으로 인한 Android 기반의 플랫폼 강세
• 결론적으로 현재는 iOS, Android 플랫폼이 대세임.
스마트폰 판매 기반 Mobile Platform 통계
Mobile Architecture Overview 2017
Development Skills Native Skills
Android Studio
• 안드로이드를 위한 통합 개발 환경.
• IntelliJ 기반. 아파치 2.0 라이선스.
JAVA
• 썬 마이크로시스템즈의 제임스 고슬링(James Gosling) 이 개발한 객체 지향적 프로그래밍 언어. 1995년에 발표.
• 웹 애플리케이션 개발에 가장 많이 사용하는 언어.모바일 기기용 소프트웨어 개발에도 널리 사용.
• 현재 버전 9까지 출시. 안드로이드는 JDK 7
Gradle
• Groovy를 이용한 빌드 시스템. Groovy와 유사한 도메인 언어를 채용.
• 안드로이드 스튜디오의 공식 빌드 시스템. Java, C/C++, Python 등과 같은 여러 가지 언어를 지원.
Kotlin
• 정적 타입 언어로서 JAVA VM 상에서 실행. JetBrains 사에서 개발.
Android Development Skills
Mobile Architecture Overview 2017
Development Skills Native Skills
Android Studio
• 안드로이드를 위한 무료 통합 개발 환경.
• JetBrains 사의 IntelliJ 기반으로 개발되었음.
Mobile Architecture Overview 2017
Development Skills Native Skills
Xcode
• Mac OS 및 iOS 애플리케이션 개발을 위간 개발 툴
Objective C
• C 프로그래밍 언어에 스몰토크 스타일의 메시지 구문을 추가한 객체 지향 언어.
• 넥스트의 NeXTSTEP 운영 체제에서 주 언어. (아직까지도 클래스 접미사로 NS 가 남아 있음.)
Swift 3.0
• 2014년 6월 2일 애플 세계 개발자 회의(WWDC)에서 처음 소개.
• Objective C와 마찬가지로 LLVM으로 빌드 되고 같은 런타임을 공유.
• 클로저, 다중 리턴 타입, 네임스페이스, 제네릭스, 타입 유추 등 현대 프로그래밍 언어가 갖고 있는 기능을 많이 포함.
iOS SDK
• 아이폰은 OS X에 들어가는 XNU 커널을 발전시켜 변형한 커널을 마찬가지로 사용.
• 아이폰 응용 소프트웨어 개발을 위한 툴 체인은 마찬가지로 OS X 개발 도구이자 GNU 도구들(GCC, apple-darwin9-gcc-4.0.1, apple-
darwin9-gcc-4.2.1 등)을 포함하는 도구인 Xcode에 기반.
iOS Development Skills
Mobile Architecture Overview 2017
Development Skills Native Skills
iOS Development Skills
Mobile Architecture Overview 2017
Development Skills Hybrid Skills
• Cordova
자바스크립트, HTML5, CSS3를 이용하여 개발.
모든 레이아웃 렌더링이 플랫폼의 네이티브 UI 프레임워크가 아닌 웹 뷰를 통해 수행.
배포를 위해 패키지 화되면서 네이티브 기기 API에 접근할 수 있음.
iOS, 안드로이드, 웹OS, 윈도 폰, 심비안 OS, RIM 블랙베리, 타이젠 지원.
블랙베리 OS 5, OS 6와 OS 10, 바다 지원.
Custom Native Plugin 개발 가능.
• Ionic
HTML, CSS, and JavaScript 과 같은 웹기술을 기반으로 개발.
룩앤필과 UI 상호작용 부분을 중용한 목표로 함.
AngularJS 와 NodeJS, Cordova 기반으로 구성됨. Cordova와 같은 컨테이너 프레임워크는 교체 가능함.
Open Source Hybrid Framework
Mobile Architecture Overview 2017
Development Skills Hybrid Skills
• Sencha Touch
HTML5, CSS3 와 JavaScript로 구성된 UI 프레임워크.
Android, iOS, Windows, Tizen, BlackBerry 디바이스 지원
Cordova 기반으로 패키징.
• Framework7
iOS & Android native look and feel 전용 프레임워크
HTML 과 CSS, VueJS와 같은 JavaScript를 이용하여 iOS, 안드로이드 Material Design 구현.
iOS or Android 웹 앱이나 Cordova 컨테이너를 이용하여 패키징.
Open Source Hybrid Framework
Mobile Architecture Overview 2017
Development Skills Hybrid Skills
Open Source Hybrid Framework
https://framework7.io/
https://cordova.apache.org/ https://ionicframework.com/
https://vuejs.org/https://www.sencha.com/products/touch/#overview
https://angularjs.org/
Mobile Architecture Overview 2017
Development Skills Mobile Development Security
OWASP Mobile Top 10 Risks - 2016
• M1 부적절한 플랫폼 사용
이 범주는 플랫폼 기능의 오용 또는 플랫폼 보안 제어 사용 실패를 다룬다. Android Intent, 플랫폼 Permissions, TouchID 오용, 키
체인 또는 모바일 운영 체제의 일부인 다른 보안 컨트롤이 포함될 수 있습니다. 모바일 앱이 이러한 위험을 경험할 수 있는
몇 가지 방법이 있습니다.
• M2 안전하지 않은 데이터 저장소
이 새로운 카테고리는 Mobile Top Ten 2014의 M2 + M4의 조합입니다. 이는 안전하지 않은 데이터 저장 및 의도하지 않은
데이터 유출을 다루고 있습니다.
• M3 충분하지 않은 통신
이는 악의적 인 핸드 셰이 킹, 잘못된 SSL 버전, 약한 협상, 민감한 자산의 일반 텍스트 통신 등을 다룹니다.
Mobile Architecture Overview 2017
Development Skills Mobile Development Security
OWASP Mobile Top 10 Risks - 2016
• M4 안전하지 않은 인증
이 범주는 최종 사용자 인증 또는 잘못된 세션 관리에 대한 개념을 탐지 합니다. 여기에는 다음이 포함될 수 있습니다.
- 필요한 경우에 사용자를 식별하지 못함
- 필요한 경우에 사용자 신원을 유지하지 못함
- 세션 관리의 약점
• M5 충분하지 않은 암호화
이 코드는 민감한 정보 자산의 암호화 부분에 해당합니다. 그러나 암호는 어떤 면에서는 불충분합니다. M3에서 TLS 또는
SSL과 관련된 모든 것이 있습니다. 또한 앱이 해야 할 때 암호화를 전혀 사용하지 않으면 M2에 속할 것입니다. 이 범주는
암호화가 시도 된 문제에 대한 것이지만 올바르게 수행되지 않았습니다.
Mobile Architecture Overview 2017
Development Skills Mobile Development Security
OWASP Mobile Top 10 Risks - 2016
• M6 안전하지 않은 인가
승인 실패 (예 : 클라이언트 측의 승인 결정, 강제 검색 등)를 캡처하는 카테고리입니다. 이는 인증 문제 (예 : 기기 등록,
사용자 식별 등)와 다릅니다.
앱이 필요한 상황에서 사용자를 전혀 인증하지 않으면 (예 : 인증되고 승인 된 액세스가 필요한 경우 일부 리소스 또는
서비스에 익명으로 액세스 권한을 부여하는 경우) 인증 오류가 아닌 인증 실패입니다.
• M7 클라이언트 코드 품질
이것은 덜 사용 된 범주 중 하나 인 "신뢰할 수없는 입력을 통한 보안 결정"이었습니다. 이것은 모바일 클라이언트의 코드
수준 구현 문제에 대한 포괄적 인 내용 일 것입니다. 이는 서버 측 코딩 실수와 구별됩니다. 이는 버퍼 오버 플로우, 형식
문자열 취약점 및 모바일 장치에서 실행되는 일부 코드를 다시 작성하는 코드 품질 실수와 같은 것들을 캡처합니다.
Mobile Architecture Overview 2017
Development Skills Mobile Development Security
OWASP Mobile Top 10 Risks - 2016
• M8 코드 변조
이 범주에는 바이너리 패치, 로컬 리소스 수정, 메서드 후킹, 메서드 변경 및 동적 메모리 수정이 포함됩니다.
응용 프로그램이 모바일 장치로 전달되면 코드 및 데이터 리소스가 해당 모바일 장치에 상주합니다. 공격자는 코드를 직접
수정하거나, 메모리 내용을 동적으로 변경하거나, 응용 프로그램이 사용하는 시스템 API를 변경하거나 대체하거나, 응용
프로그램의 데이터와 자원을 수정할 수 있습니다. 이것은 공격자에게 소프트웨어의 의도 된 사용을 개인적 또는 금전적
이득을 위해 전복시키는 직접적인 방법을 제공 할 수 있습니다.
• M9 역공학
이 범주에는 소스 코드, 라이브러리, 알고리즘 및 기타 자산을 결정하기위한 최종 코어 바이너리의 분석이 포함됩니다. IDA
Pro, Hopper, otool 및 기타 바이너리 검사 도구와 같은 소프트웨어를 사용하면 공격자가 응용 프로그램의 내부 동작을 파악할
수 있습니다. 이것은 백 엔드 서버, 암호화 상수 및 암호 및 지적 재산에 대한 정보를 공개하는 것 외에도 응용 프로그램의
초기 취약점을 악용하는 데 사용될 수 있습니다.
Mobile Architecture Overview 2017
Development Skills Mobile Development Security
OWASP Mobile Top 10 Risks - 2016
• M10 관련 없는 기능
종종 개발자는 숨겨진 백도어 기능 또는 프로덕션 환경으로 릴리스 되지 않을 예정인 기타 내부 개발 보안 컨트롤을
포함합니다. 예를 들어 개발자가 실수로 하이브리드 앱에 댓글로 비밀번호를 포함 할 수 있습니다. 또 다른 예는 테스트 중
2 요소 인증을 사용하지 못하도록 하는 것입니다.
출처 : https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10
Mobile Architecture Overview 2017
Development Skills Besides Skills
• Xcode 용 오픈소스 라이브러리 패키지 관리 툴
• 일반적인 오픈소스 패키지 관리툴의 기능 제공
• Podfile을 통해 오픈소스 라이브러리를 정의.
• Front-end Tool 제공.
• Mac OS 에 기본 제공되는 Ruby 기반으로 구성.
CocoaPod
https://cocoapods.org
Mobile Architecture Overview 2017
Development Skills Besides Skills
• Mac OS 용 패키지 관리자.
• 애플에서 제공하지 않는 리눅스 오픈소스 패키지를 Mac OS 용으로 포팅.
• /usr/local 에 설치 하지 않고 별도 전용 디렉토리에 설치 하여 시스템에 영향이 적음.
• Git 과 Ruby 기반으로 구성됨.
• Ruby 패키지 관리자 Gem의 의존성 모듈 설치 가능.
Homebrew
https://brew.sh/index_ko.html
Mobile Architecture Overview 2017
Development Skills Besides Skills
• Chrome V8 Javascript 엔진으로 빌드 Javascript 런타임.
• 이벤트 기반, 넌 블로킹 I/O 모델을 사용하여 가볍고 효율적임.
• 패키지 관리자 npm의 생태계는 세계에서 가장 큰 오프소스 라이브러리 생태계.
• JavaScript Full Stack 프레임워크.
• 웹 뿐만 아니라 모바일, 서버사이드 컴포넌트, Micro Service 등 여러 분야에서 사용.
Node
https://nodejs.org/ko/
Mobile Architecture Overview
Advanced
Test Framework
React Native
Developer Program
Apple Enterprise Program
Mobile Landscape
Mobile Architecture Overview 2017
Advanced Test Framework
• Open Source 모바일 테스트 프레임워크.
• 테스트 오토메이션 지원
• 스크립트 기반의 테스트
• Node 기반으로 이루어진 서버와 클라이언트 드라이버로 구성
• Front-End Tools 제공 .
Appium
Mobile Architecture Overview 2017
Advanced React Native
React Native Architecture
• Facebook 에서 개발한 Hybrid 모바일 프레임워크.
• React 를 기반으로 개발.
• JSX 문법을 이용하여 개발
• Facebook, Instagram, Airbnb, Baidu, QQ 앱이
React Native 로 개발
• 동적 리로딩으로 개발 시간 단축.
• Native 코드의 모듈화로 개발 용이.
• Not Webkit base.
• https://facebook.github.io/react-native/
Mobile Architecture Overview 2017
Advanced Test Framework
• 오프라인-우선 기능을 제공하는 리액티브 모바일 앱을 쉽게 개발할 수 있게 해주는 유연한 객체 데이터베이스 프레임워크
• 10줄 이하의 코드로 실시간 협업 기능 구현.
• 모바일 앱을 더 빠르게 개발.
• SQLite와 Core Data를 대체
• 오픈소스로 공개.
realm
Mobile Architecture Overview 2017
Advanced React Native
React Native Architecture
Mobile Architecture Overview 2017
Advanced React Native
• React Native Worker Thread : Image decoding이나 디스크 I/O, 레이아웃 처리와 같은 CPU 집중적인 작업.
• React Native Thread : JavaScript 인터프린트 한 후 비동기 브릿지를 통하여 UI Thread와 통신하는 역할.
• App UI Thread : 실제 네이티브 애플리케이션의 UI Thread.
React Native
Mobile Architecture Overview 2017
Advanced Developer Program
• 개인으로 등록하기 : 129,000
앱스토어 배포
1년마다 갱신
• 기업으로 등록하기 : 129,000
앱스토어 배포
1년마다 갱신
• Enterprise Program : 379,000
인하우스 배포
1년마다 갱신
Apple Developer Program
Mobile Architecture Overview 2017
Advanced Apple Developer Enterprise Program
• https://developer.apple.com/programs/enterprise/kr/
• 사내 앱 배포 (인 하우스 앱스토어 운영)
• 해당 기업에 법적 책임을 지는 DUNS 번호 확인.
• 앱스토어를 통한 사외 배포는 불가.
• 사내 개발 팀 구성
Apple Developer Enterprise Program
Mobile Architecture Overview 2017
Advanced Developer Program
• https://play.google.com/apps/publish/
• 가입 비용 25$
• 앱스토어, 인하우스 배포
• 갱신 없음
Android Developer Program
Mobile Architecture Overview 2017
Development Mobile Landscape
• 모바일 응용 프로그램 개발은 스마트 폰 응용 프로그램 및 웨어러블 기술을 생각하는 모바일 장치 및 기술을 위한 소프트웨어를
만드는 과정.
• 모바일 개발자가 되는 것은 성공적인 경력을 쌓을 수 있는 기회임.
• 모바일 앱 경제는 2020 년까지 총 매출액이 1,025 억 달러에 달할 것으로 예상됨.
• 2015 년 매출 418 억에 비해 20% 성장.
• 모바일 개발 전문 기술 전문가의 필요성 증가를 나타냄.
• 세계 모바일 앱 스토어 수익의 45%가 신흥 시장에서 나올 것.
• 2016 년 현재 인도와 브라질과 같은 시장은 과도한 성장세를 보이고 있으며, 미국과 같은 성숙한 시장은 포화 상태.
• 성숙한 시장에서 다운로드 속도 저하.
• 모바일 앱에 종사하는 데 더 많은 시간을 소비하고 전자 상거래를 통해 더 많은 돈을 지출하고 있음.
• 2020 년까지 232 억 달러의 매출 증가를 예측합니다.
The Mobile App Economy
Mobile Architecture Overview 2017
Development Mobile Landscape
• 모바일 앱 개발. 테스트 뿐 만 아니라 구현 및 유지보수를 관리하는 책임을 가짐.
• 미국 내에서는 평균 72,183 달러의 수입을 얻음.
• 모바일 개발업체의 평균 급여 범위는 41,195 ~ 108,890 달러 임.
• 범위를 좁혀서 iOS 개발자가 된다면 평균 급여는 80,343 달러임
• Android 앱 개발자는 평균 급여가 77,442 달러임
• 중간 정도의 경력을 쌓게 되면 평균 급여 97,100 달러.
The Mobile Developer Salary
Mobile Architecture Overview 2017
Advanced Mobile Landscape
The future of mobile
https://www.entrepreneur.com/article/236832
Mobile Architecture Overview 2017
Advanced Mobile Landscape
Foundations of Mobile
Mobile Architecture Overview 2017
Advanced Mobile Landscape
Mobile Native Advertising Landscape

More Related Content

What's hot

Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1
이경주 이경주
 
Beginning react native
Beginning react native Beginning react native
Beginning react native
Eri Han
 
1.develop environment
1.develop environment1.develop environment
1.develop environment
이경주 이경주
 
하이브리드 앱_개발_개요
하이브리드 앱_개발_개요하이브리드 앱_개발_개요
하이브리드 앱_개발_개요
BongSoo Jang
 
지도 서비스용 웹앱 개발환경 사용기
지도 서비스용 웹앱 개발환경 사용기지도 서비스용 웹앱 개발환경 사용기
지도 서비스용 웹앱 개발환경 사용기
Q-Young Lee
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용jinwook shin
 
Ionic으로 모바일앱 만들기 #5
Ionic으로 모바일앱 만들기 #5Ionic으로 모바일앱 만들기 #5
Ionic으로 모바일앱 만들기 #5
성일 한
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
JinKyoungHeo
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
Devgear
 
React native study
React native studyReact native study
React native study
jonghyun Park
 
하이브리드 앱 개발 개요
하이브리드 앱 개발 개요하이브리드 앱 개발 개요
하이브리드 앱 개발 개요Sohee Jeong
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"Changhwan Yi
 
iOS Modular Architecture with Tuist
iOS Modular Architecture with TuistiOS Modular Architecture with Tuist
iOS Modular Architecture with Tuist
정민 안
 
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
Sang Don Kim
 
4.theme configuration
4.theme configuration4.theme configuration
4.theme configuration
이경주 이경주
 
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권NAVER D2
 
Project Avalon Online(Game) Final Report
Project Avalon Online(Game) Final ReportProject Avalon Online(Game) Final Report
Project Avalon Online(Game) Final Report
Matthew Chang
 
Citrine소개서
Citrine소개서Citrine소개서
Citrine소개서
logeo
 
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
양재동 코드랩
 

What's hot (19)

Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1
 
Beginning react native
Beginning react native Beginning react native
Beginning react native
 
1.develop environment
1.develop environment1.develop environment
1.develop environment
 
하이브리드 앱_개발_개요
하이브리드 앱_개발_개요하이브리드 앱_개발_개요
하이브리드 앱_개발_개요
 
지도 서비스용 웹앱 개발환경 사용기
지도 서비스용 웹앱 개발환경 사용기지도 서비스용 웹앱 개발환경 사용기
지도 서비스용 웹앱 개발환경 사용기
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
 
Ionic으로 모바일앱 만들기 #5
Ionic으로 모바일앱 만들기 #5Ionic으로 모바일앱 만들기 #5
Ionic으로 모바일앱 만들기 #5
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
 
React native study
React native studyReact native study
React native study
 
하이브리드 앱 개발 개요
하이브리드 앱 개발 개요하이브리드 앱 개발 개요
하이브리드 앱 개발 개요
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"
 
iOS Modular Architecture with Tuist
iOS Modular Architecture with TuistiOS Modular Architecture with Tuist
iOS Modular Architecture with Tuist
 
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
[Td 2015]라즈베리파이에 windows 10 io t core 맛있게 발라 먹기(유정현)
 
4.theme configuration
4.theme configuration4.theme configuration
4.theme configuration
 
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
 
Project Avalon Online(Game) Final Report
Project Avalon Online(Game) Final ReportProject Avalon Online(Game) Final Report
Project Avalon Online(Game) Final Report
 
Citrine소개서
Citrine소개서Citrine소개서
Citrine소개서
 
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
 

Similar to Mobile architecture overview

Doc.htm
Doc.htmDoc.htm
Doc.htm
Sung Eob Lee
 
mobile platform
mobile platformmobile platform
mobile platform
ash84
 
Mobile Platform
Mobile PlatformMobile Platform
Mobile Platform
ash84
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Daniel Juyung Seo
 
제품소개 두나미스 20121008
제품소개 두나미스 20121008제품소개 두나미스 20121008
제품소개 두나미스 20121008Taeho Jang
 
Smart Market Strategy for Mobile Web Developer
Smart Market Strategy for Mobile Web DeveloperSmart Market Strategy for Mobile Web Developer
Smart Market Strategy for Mobile Web Developer
Jonathan Jeon
 
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
MarketingUracle
 
W3C와 국제적 웹 기술 협력을 위한 제언 (2005)
W3C와 국제적 웹 기술 협력을 위한 제언 (2005)W3C와 국제적 웹 기술 협력을 위한 제언 (2005)
W3C와 국제적 웹 기술 협력을 위한 제언 (2005)Channy Yun
 
크로스플랫폼Byoojoo
크로스플랫폼Byoojoo크로스플랫폼Byoojoo
크로스플랫폼Byoojoo
Kim jeehyun
 
SKT 오픈마켓
SKT 오픈마켓SKT 오픈마켓
SKT 오픈마켓
Seungyul Kim
 
2011년도 모바일 웹 vs. 모바일앱 전망
2011년도 모바일 웹 vs. 모바일앱 전망2011년도 모바일 웹 vs. 모바일앱 전망
2011년도 모바일 웹 vs. 모바일앱 전망
Seungyul Kim
 
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
ChangGyum Kim
 
Web os 전략 0912
Web os 전략 0912Web os 전략 0912
Web os 전략 0912
우일 권
 
Smart Phone Changes The World
Smart Phone Changes The WorldSmart Phone Changes The World
Smart Phone Changes The World
Gunhee Lee
 
성공하는 모바일비즈니스의 8가지 패러다임
성공하는 모바일비즈니스의 8가지 패러다임성공하는 모바일비즈니스의 8가지 패러다임
성공하는 모바일비즈니스의 8가지 패러다임dlgnltjq
 
스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경
스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경
스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경
mosaicnet
 

Similar to Mobile architecture overview (20)

Doc.htm
Doc.htmDoc.htm
Doc.htm
 
Doc.htm
Doc.htmDoc.htm
Doc.htm
 
mobile platform
mobile platformmobile platform
mobile platform
 
Mobile Platform
Mobile PlatformMobile Platform
Mobile Platform
 
Sam03
Sam03Sam03
Sam03
 
Sam03
Sam03Sam03
Sam03
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
 
조재완
조재완조재완
조재완
 
제품소개 두나미스 20121008
제품소개 두나미스 20121008제품소개 두나미스 20121008
제품소개 두나미스 20121008
 
Smart Market Strategy for Mobile Web Developer
Smart Market Strategy for Mobile Web DeveloperSmart Market Strategy for Mobile Web Developer
Smart Market Strategy for Mobile Web Developer
 
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
 
W3C와 국제적 웹 기술 협력을 위한 제언 (2005)
W3C와 국제적 웹 기술 협력을 위한 제언 (2005)W3C와 국제적 웹 기술 협력을 위한 제언 (2005)
W3C와 국제적 웹 기술 협력을 위한 제언 (2005)
 
크로스플랫폼Byoojoo
크로스플랫폼Byoojoo크로스플랫폼Byoojoo
크로스플랫폼Byoojoo
 
SKT 오픈마켓
SKT 오픈마켓SKT 오픈마켓
SKT 오픈마켓
 
2011년도 모바일 웹 vs. 모바일앱 전망
2011년도 모바일 웹 vs. 모바일앱 전망2011년도 모바일 웹 vs. 모바일앱 전망
2011년도 모바일 웹 vs. 모바일앱 전망
 
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
 
Web os 전략 0912
Web os 전략 0912Web os 전략 0912
Web os 전략 0912
 
Smart Phone Changes The World
Smart Phone Changes The WorldSmart Phone Changes The World
Smart Phone Changes The World
 
성공하는 모바일비즈니스의 8가지 패러다임
성공하는 모바일비즈니스의 8가지 패러다임성공하는 모바일비즈니스의 8가지 패러다임
성공하는 모바일비즈니스의 8가지 패러다임
 
스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경
스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경
스마트폰 전문 개발사가 바라보는 급변하는 모바일 환경
 

Mobile architecture overview

  • 2. Mobile Architecture Overview 2017 Introduction 강의 순서 강의 순서 Introduction • 강의목표 • 강사소개 History • 스마트폰 역사 Architecture • Different Mobile App Types • iOS Architecture • Android Architecture • Hybrid Architecture Enterprise Solution • Mobile Device Management • Mobile Application Management • Mobile Enterprise Application Platform • Mobile Application Development Platform • Mobile Content Management Back-End Architecture • Vendor Architecture • Micro Service Architecture • OAUTH 2.0 • Push Server • Google Firebase Development Skills • Native Skills • Hybrid Skills • Beside Skills Advanced • Test Framework • React Native • Developer Program • Apple Enterprise Developer Program • Mobile Landscape
  • 4. Mobile Architecture Overview 2017 Introduction 강의 개요 • 모바일 스마트폰의 역사를 통해 배경 지식을 갖게 된다. • 주요 모바일 스마트 폰 앱 개발 방법의 차이점을 알고 그 아키텍처 구조를 안다. • 기업 환경에서 사용하게 되는 모바일 솔루션을 알고, 기업 환경에서의 모빌리티 요구사항을 이해한다. • 모바일 Front-End 아키텍처와 함께 Back-End 아키텍처를 이해하여 모바일 스택을 이해한다. • 개발 방법에 따른 필요한 개발 스킬의 범위를 알고 앞으로의 교육을 위한 방향성을 제시한다. • 기초 적인 모바일 개발에서 더 나아가 트렌드 기술이나 깊게 다뤄야 하는 내용에 대해 알아본다. • 모바일 관련 Open Source Insight 를 넓히고 이를 실제 프로젝트에 응용할 수 있다. 강의 목표
  • 5. Mobile Architecture Overview 2017 Introduction 강사 소개 Leonardo Park kt ds_Application Architecture IoT Makers Platform, Smartzone, TMS 2.0 한글과컴퓨터_ 선임연구원 Webkit, ePub Rendering, HWP Filter 엠군미디어_ 선임연구원 FFMpeg, Live Streaming, Server Side Encoding ageofblue@gmail.com@ageofbluecodingman
  • 6. Mobile Architecture Overview 2017 Introduction 강의 개요 교재 https://goo.gl/p43yd3
  • 8. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 전자식 숫자 적분 및 계산기(Electronic Numerical Integrator And Computer; ENIAC) • 1943년에서 3년에 걸쳐서 펜실베이니아 대학의 모클리와 에커트가 제작. • 폭: 1 m • 높이:2.5m • 길이:25m • 총 중량: 약 30 t • 진공관 갯수: 약 18,000개 • 릴레이: 1500개 • 작동 전력: 150 kw • 개발비 총액: 49만 달러 (당시 미국 달러 기준) 최초의 컴퓨터 ENIAC
  • 9. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 1992년 IBM 사이먼 퍼스널 커뮤니케이터 (IBM Simon Personal Communicator)는 IBM이 설계한 휴대용 휴대 전화이자 개인 정보 단말기. • 1997년에 이르러 스마트폰이라는 용어가 만들어졌지만, 사이먼 퍼스널 커뮤니케이터는 최초의 스마트폰으로 간주됨. 최초의 스마트폰 IBM 사이먼 • IBM과 벨사우스(Bellsouth)에서 공동 개발. • 1992년 라스베가스 컴덱스에서 전시. • 1993년 일반인들에게 시판 • 당시 가격은 899불 • 발신/수신기능 만 있는 당시 휴대전화들과 비교하면 • 주소록, 세계시간, 계산기, 메모장, 이메일, 팩스, 오락 기능이 포함 • 최초로 터치스크린을 탑재.
  • 10. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 노키아 커뮤니케이터 라인은 1996년에 노키아 9000을 시작으로 첫 스마트폰 제품라인(Nokia Communicator line)을 발표. • 팜탑 컴퓨터 스타일의 스마트폰은 당시 노키아의 베스트셀러의 휴대 전화와 휴렛패커드의 초기 PDA 모델의 협동 결과로 탄생. • 이 두 개의 장치들은 힌지(hinge)를 통해 고정. • 노키아 9210은 최초의 컬러 스크린, 개방형 운영 체제를 가진 최초의 진정한 스마트폰. • 9500 커뮤니케이터, 노키아의 첫 카메라 폰이자 WiFi 폰. • 고가의 휴대폰으로 다른 제조사의 스마트폰보다도 20%~40% 정도 더 비쌈. • 2010년 심비안을 오픈 소스화. • 2007년 이후 애플을 중심으로 급박하게 바뀌던 모바일 생태계에 적응하지 못하고 현재는 마이크로소프트에 인수된 상태. • 휴대 전화 사업본부는 마이크로소프트 모바일로 사명이 개명. 노키아
  • 11. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 심비안에서 개발한 모바일 기기용 운영 체제. • 라이브러리, 사용자 인터페이스, 프레임워크, 다양한 도구를 포함. • 2009년 2월 노키아에 인수. • 2009년부터 심비안 재단을 설립. 로열티 없는 오픈소스 모바일 운영 체제를 만들 목적으로 운영. • 노키아를 비롯해 삼성전자, LG전자, AT&T, NTT도코모, 모토로라, 소니 에릭슨, 보다폰 등이 참여.(모토로라와 LG전자는 사실상 불참) • 2010년 9월말 소니 에릭슨은 심비안 OS를 탑재한 단말기 생산 중단을 선언. • 삼성전자도 2010년 12월 31일까지 심비안 OS에서 지원하는 개발 관련 콘텐츠를 제거하고 삼성 앱스토어에서 심비안 앱들을 삭제. 심비안OS • 프로그래밍 언어 C++, 자바ME, 파이썬, Qt익스텐디드 • 업데이트 방식 OTA(무선업데이트) • 패키지관리자 노키아 슈트 sis • 지원되는 플랫폼 ARM 아키텍처, x86 • 커널형태 마이크로커널(EKA2) • 라이선스 최초 상용 소프트웨어, 현재 (EPL)
  • 12. Mobile Architecture Overview 2017 History 스마트폰의 역사 • '블랙베리'라는 이름의 휴대용 무선 기기는 1999년에 공개된 양방향 무선 호출기. • 2002년부터 발매된 스마트폰 '블랙베리'가 현재 널리 알려져 있음. • 푸시형 전자 메일, 휴대 전화, 텍스트 메시징, 인터넷 팩스, 웹 브라우저 기능을 비롯하여 많은 무선 정보 서비스가 탑재. • 주소록, 캘린더 서비스, 일정 목록 등을 갖추고 있으며, 전자 메일 위주의 서비스에 적합하게, 손가락으로 누를 수 있는 쿼티(QWERTY) 컴퓨터 자판내장. ARM 7 및 9 프로세서를 탑재. • 법인대상 서비스 블랙베리 엔터프라이즈 서비스(BlackBerry Enterprise Service, BES) 는 개인 및 중소기업 대상 서비스. • RIM의 발표에 의하면, 2008년 9월 25일 서비스 가입 사용자 1900만명. • 2011년 닐슨의 조사, iOS와 안드로이드폰 점유율의 강세로 블랙베리의 점유율은 하락. • 2013년 2월 기준으로 블랙베리의 전 세계시장 점유율은 1.1%. • 현재는 … Research In Mobile
  • 13. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 블랙베리 OS(BlackBerry OS)는 리서치 인 모션(Research In Motion Limited, RIM)이 블랙베리 스마트폰을 위해 만든 소프트웨어 플랫폼. • 멀티태스킹을 제공하고, 트랙휠, 트랙볼, 트랙패드, 터치스크린 같은 특화된 입력 장치들을 지원. • 7.1 OS 버전부터는 핫스팟 기능이 추가. • 이 후 제품은 블랙베리 10 OS로 바뀌어서 출시. • 안드로이드와 iOS에 밀려서 점유율이 하락하고 있다. 블랙베리 OS • 마지막 버전 7.1.0.2930 (블랙베리9790/9900)) • 프로그래밍 언어 자바 • 패키지관리자 블랙베리 데스크톱 매니저 • 지원되는 플랫폼 블랙베리 계열의 스마트폰 • 커널형태 자바 가상 머신 • 기본 UI 그래픽 사용자 인터페이스 • 라이선스 사유
  • 14. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 마이크로소프트의 윈도우 모바일(당시 OS명은 포켓 PC) 팜원의 팜이 각각 유·무선 네트워크 연결을 지원. • 2002년, 2003년 정식으로 OS상에서 전화 모듈을 지원함으로써 PDA폰과 스마트폰이 출시. • 윈도우 모바일은 기존 포켓 PC와 동일한 사양에 전화 모듈을 넣은 것을 포켓 PC 폰 에디션. • 터치스크린이 없고 UI가 일반 휴대 전화에 맞춰진 것을 스마트폰으로 명명. • 가격, PDA폰에 대한 편견 등으로 인해 일반 휴대 전화만큼 널리 사용되지는 못함. • 2012년부터 스마트폰용 운영 체제 윈도우 폰을 출시. • 노키아를 필두로 많은 스마트폰을 만들고 있지만 여전히 시장의 반응은 나쁨. • 무엇보다 앱 생태계의 빈약함이 큰 약점. • 2014년부터는 마이크로소프트 모바일에서 직접 휴대 전화를 생산. Microsoft
  • 15. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 2007년에 iOS 기반으로 아이팟, 휴대 전화, 모바일 인터넷이라는 세 가지 주요 기능을 합친 스마트폰인 아이폰을 출시. • 2008년에는 3세대 통신망을 지원하는 아이폰 3G를 출시. • 2009년에 아이폰 3GS를 출시. • 2010년에는 아이폰 4를 출시. • 2011년에 아이폰 4S를 출시. • 2012년에는 아이폰 5를 출시. • 2013년 9월 아이폰5S와 5C 출시와 동시에 iOS7을 공개. • 2014년 9월 아이폰6와 아이폰6 플러스를 출시. iOS8 공개. • 스마트폰이 활성화될 수 있었던 '스토어'라는 개념을 도입해 적용. • 2015년 9월에는 아이폰 6s와 아이폰6s+를 출시. • 아이폰은 세계 스마트폰 시장 수익의 94%를 차지한다. • 2016년 7월 28일에는 스마트폰 최초로 누적 판매량 10억대 돌파. Apple
  • 16. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 안드로이드(영어: Android)는 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹 브라우저, 이메일 클라이언트, 단문 메시지 서비스(SMS), 멀티미디어 메시지 서비스(MMS)등)을 포함하고 있는 소프트웨어 스택이자 모바일 운영 체제. • 자바 언어로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일 된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공. • 2005년에 안드로이드 사를 구글에서 인수한 후 2007년 11월에 안드로이드 플랫폼을 휴대용 장치 운영 체제로서 무료 공개. (안드로이드사는 앤디 루빈이 세운 업체) Google
  • 17. Mobile Architecture Overview 2017 History 스마트폰의 역사 Google • 2007년 11월 5일에 텍사스 인스트루먼트, 브로드컴 코퍼레이션, 구글, HTC, 인텔, LG전자, 마벨 테크놀로지 그룹, 모토로라, 엔비디아, 퀄컴, 삼성전자, 스프린트 넥스텔, T-모바일의 몇몇 회사로 구성된 컨소시엄인 오픈 핸드셋 얼라이언스(OHA)가 모바일 기기의 공개 표준을 개발하는 것을 목표로 결성. OHA는 리눅스 커널 2.6에서 빌드된 그들의 첫 번째 모바일 기기 플랫폼 결과물인 안드로이드를 발표. • 2008년 10월 21일에 안드로이드가 오픈 소스로 선언. 네트워크와 텔레폰 스택을 포함하는 완전한 소스 코드를 아파치 라이선스로 공개. • 2008년 12월 9일에 ARM 홀딩스, 아세로스(Atheros Communications), 에이수스, 가르민, 소프트뱅크, 소니 에릭슨, 도시바, 보다폰으로 구성된 새로운 14개의 멤버가 안드로이드 프로젝트에 참여. • 현재 API만 완전한 공개 소스인 상태이며 VM에대한 소스는 공개하지 않음.
  • 18. Mobile Architecture Overview 2017 History 스마트폰의 역사 • 스마트폰을 발전 속도는 매우 빠름. • 최초의 스마트폰 이후 20년 만에 현대의 스마트폰이 나오게 되었으며, 그에 따르는 생태계를 이루게 됨. • 제조 뿐 만 아니라 소프트웨어 업계에도 지대한 영향을 미침. • 지금도 매년 아이폰은 2개의 모델 라인이 출시됨. Timeline 1992년 2017년 About 20 years
  • 19. Mobile Architecture Overview 2017 History 스마트폰의 역사 Are U Ready? • 모바일 개발자 - 최신 기술을 다루는 멋진 직업.
  • 20. Mobile Architecture Overview 2017 History 스마트폰의 역사 Are U Ready? • 모바일 개발자 – 하지만 실상은 이런 모습 ???
  • 21. Mobile Architecture Overview 2017 History 스마트폰의 역사 Are U Ready? • 모바일 개발자 – 올바른 개발자의 자세.
  • 22. Mobile Architecture Overview Architecture Different Mobile App Types Android Architecture iOS Architecture Hybrid Architecture
  • 23. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 전통적인 방식의 웹사이트 Mobility 제공은 반응형 웹을 통하여 지원. • XHTML, HTML5, JQuery Mobile과 같은 JavaScript 등의 기술을 통하여 구현. • 기존의 웹 컨텐츠를 모바일에 적합한 UI/UX로 변환하여 제공함. • 모바일 브라우저를 통하여 해당 웹사이트를 접속. • 보통 Http Header를 통해 모바일 브라우저나 OS 를 판단하여 모바일 웹사이트나 데스크탑 웹사이트로 분기하여 서비스. 모바일 개발의 분류
  • 24. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 각 제조사별 디바이스 파편화. 안드로이드 디바이스의 경우 파편화 정도가 심각함. • 개발자의 입장에서 멀티 디바이스를 지원해야 하는 경우, 더 많은 코드와 테스트가 필요함. • 특히 안드로이드 사용자의 다양한 해상도를 가진 디바이스 지원은 불가능 함. 디바이스 파편화
  • 25. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 모바일 디바이스 파편화로 인한 새로운 기술이 요구됨. • 단지 모바일 UI/UX 측면 뿐만 아니라 아키텍처적 개선이 요구됨. • 여러 플랫폼에서의 애플리케이션 개발을 위한 하이브리드 앱 개발 혹은 크로스 플랫폼 기술이 요구됨. • 여러 디바이스의 OS, SDK, 해상도 등의 처리를 위한 프레임워크 요구. • 하나의 소스로 여러 플랫폼에 배포할 수 있는 프레임워크의 요구. 하이브리드 모바일 앱 개발의 배경
  • 26. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 개발 방식에 따라 크게 웹 앱, 하이브리드 앱, 네이티브 앱 개발로 나뉘어짐. • 웹 앱 방식 이나 하이브리드 앱 개발 방식은 HTML5, JavaScript 기술을 이용하여 앱을 개발. • 원칙적으로 웹 앱의 경우는 디바이스의 API 사용 불가. • Native 앱 같은 경우는 OS에서 제공되는 SDK를 통해 개발. • 하이브리드 및 네이티브 앱은 패키징을 통하여 앱스토어 배포. 모바일 개발의 분류
  • 27. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 하이브리드 방식에는 네이티브 컨테이너 안에 웹코드와 네이티브 코드가 같이 들어가는 구성을 가질 수 있음. • 보통 플러그인 방식으로 네이티브 코드가 추가됨. • UI/UX 적인 부분에서 최적의 효과를 내기위해 네이티브 컨테이너를 직접 구성하는 방식도 있음. 메뉴나 중요한 컴퍼넌트 들은 네이티브로 구현하고 자주 바뀌는 동적 컨텐츠는 웹코드로 구현. 모바일 개발의 분류
  • 28. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 네이티브 앱의 경우 바로 안드로이드 혹은 iOS 와 같은 모바일OS 에서 제공되는 SDK를 통해 API 호출. • 하이브리드 앱의 경우는 네이티브 컨테이너에서 제공되는 API를 호출. • 네이티브 컨테이너는 OS에서 제공되는 API를 APP 개발자에게 제공함. • 웹 앱의 경우는 모바일 브라우저를 통해 URL 접속 후 애플리케이션을 접근. • 웹 앱의 경우는 OS 에서 제공되는 API 호출은 할 수 없으며, 브라우저에서 제공되는 기능만 사용. 모바일 개발의 분류에 따른 구조
  • 29. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 하이브리드 방식은 독립 실행형 앱, 다중 앱 관리 방식의 앱, 웹 – 네이티브 혼합 방식으로 세부적으로 나뉠 수 있다. • 하이브리드 방식과는 다르게 크로스 플랫폼 네이티브 방식도 존재한다. • 클로스 플랫폼 네이티브 방식은 C, C++과 같은 언어로 짜여진 라이브러리를 제공하여 하나의 언어로 개발하게 된다.  Android NDK : C++, iOS Objective : C, C++  Cocos2d-x 와 같은 게임 개발 프레임워크. 모바일 개발 방식에 대한 분류
  • 30. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 웹의 장점과 앱의 장점을 결합한 환경. • 사용자가 브라우저를 통하여, 처음 방문할 때부터 사용 가능하며, 설치가 필요 없음. • 느린 네트워크에서도 빠르게 로드 되고, 관련된 푸시 알림을 전송하며, 홈 화면에 아이콘이 있고, 전체 화면 전환. Progressive Web App • Progressive - 점진적인 개선을 통해, 어떤 브라우저를 선택하든 상관없이 모든 사용자에게 적합. • 반응형 - 데스크톱, 모바일, 태블릿 등 모든 폼 팩터에 적당. • 연결 독립적 - 서비스 워커를 사용하여 오프라인이나 느린 네트워크에서 작동. • 앱과 유사 - 앱 셸 모드에서 작성되기 때문에 앱 스타일의 상호작용 및 탐색 기능을 사용자에게 제공. • 최신 상태 - 서비스 워커 업데이트 프로세스 덕분에 항상 최신 상태로 유지. • 안전 - HTTPS를 통해 제공되므로 스누핑이 차단되며, 콘텐츠가 위/변조 방지. • 검색 가능 - W3C 매니페스트 및 서비스 워커 등록 범위 덕분에 "애플리케이션"으로 식별되므로, 검색 엔진에서 검색 가능. • 재 참여 가능 - 푸시 알림과 같은 기능을 통해 쉽게 재참여가 가능. • 설치 가능 - 앱 스토어 필요 없이 사용자가 자신에게 가장 유용한 앱을 홈 화면에 유지할 수 있음. 특징
  • 31. Mobile Architecture Overview 2017 Architecture Different Mobile App Types Service Worker • 브라우저가 백그라운드에서 실행하는 스크립트 • 웹페이지와는 별개로 작동하며, 웹페이지 또는 사용자 상호작용이 필요하지 않은 기능에 사용. • 현재 푸시 알림 및 백그라운드 동기화와 같은 기능은 이미 제공. • 향후 주기적 동기화 또는 지오펜싱과 같은 기능 지원 예정. • 오프라인 환경을 완벽히 통제할 수 있는 권한을 개발자에게 부여하여 오프라인 환경을 지원. • 서비스 워커는 JavaScript Worker이므로 DOM에 직접 액세스할 수 없음. • postMessage 인터페이스를 통해 전달된 메시지에 응답하는 방식으로 제어 대상 페이지와 통신. • 서비스 워커는 프로그래밍 가능한 네트워크 프록시이며, 페이지의 네트워크 요청 처리 방법을 제어함. • 서비스 워커는 Promise를 광범위하게 사용함. 특징
  • 32. Mobile Architecture Overview 2017 Architecture Different Mobile App Types Progressive Web App Demo
  • 33. Mobile Architecture Overview 2017 Architecture Different Mobile App Types • 개발자 혹은 개발 그룹이 가지고 있는 스킬은 무엇인지? • 앱스토어에 배포되어야 하는지? • 디바이스의 특화된 기능을 사용해야 하는가? • 좀더 빠른 성능이나 개선된 UI 상호작용이 필요한가? • 복수 플랫폼의 배포 여부. 모바일 개발 방식의 선택
  • 34. Mobile Architecture Overview 2017 Architecture Different Mobile App Types 모바일 개발 방식의 선택 • 애플리케이션이 센서나 멀티미디어 적인 장치의 기능을 사용하는가? • 홈스크린이나 디바이스의 메모리 공간을 사용 해야 하는가? • 그래픽이나 계산 로직의 성능이 필요한가? • 데스크탑 사용자 경험과 모바일 사용자 경험이 분리 되어 제공되어야 하는가? • 디바이스를 사용하기 위해 모바일 네비게이션이 필요한가? • 사용자들에게 이 앱을 여러 디바이스에서 제공되어야 하는가? • 데스크탑과 모바일 사이트의 많은 코드를 비용 감소를 위해 재사용해야 하는가? • OS 릴리즈에 따르는 유지보수 비용을 감소해야 하는가? • 사용자의 디바이스에 데이터를 저장해야 하는가?
  • 35. Mobile Architecture Overview 2017 Architecture Android Architecture Android Platform Architecture 다양한 기기와 폼 팩터에 사용할 수 있도록 제작된 Linux 기반의 오픈 소스 소프트웨어. Get Source : https://source.android.com/ Linux Kernel • Linux 커널 기반. • Android 런타임은 스레딩 및 하위 수준의 메모리 관리 기능에 Linux 커널사용. • Linux 커널의 주요 보안 기능을 활용하고, 제조업체가 드라이버를 개발용이. HAL(Hardware Abstract Layer) • 상위 수준의 Java API 프레임워크에 하드웨어 표준 인터페이스를 제공 • 여러 라이브러리 모듈로 구성되어 있으며, 카메라 또는 블루투스 모듈과 같은 특정 유형의 하드웨어 구성 요소를 위한 인터페이스 구현. • 프레임워크 API가 하드웨어 액세스를 위해 호출하면, 시스템이 해당
  • 36. Mobile Architecture Overview 2017 Architecture Android Architecture Android Platform Architecture Android 런타임 • Android 버전 5.0(API 레벨 21) 이상을 실행하는 기기의 경우, ART(Android 런타임) 인스턴스로 실행. • ART는 DEX 파일을 실행하여 저용량 메모리 기기에서 여러 가상 머신에서 실행하도록 작성됨. • DEX 파일은 Android용으로 특별히 설계된 바이트코드 형식. 네이티브 C/C++ 라이브러리 • ART 및 HAL 등의 많은 핵심 Android 시스템 구성 요소와 서비스가 C 및 C++로 작성된 네이티브 코드를 기반으로 빌드. • 플랫폼은 Java 프레임워크 API를 제공하여 이러한 일부 네이티브 라이브러리의 기능을 앱에 노출함. • 프레임워크의 Java OpenGL API를 통해 OpenGL ES에 액세스하여 앱에서 2D 및 3D 그래픽을 그리고 조작할 수 있는 지원 기능 등을 추가 할 수 있음. • C 또는 C++ 코드가 필요한 앱을 개발하는 경우에는 Android NDK를 사용하여 네이티브 코드에서 직접 이러한 몇몇 네이티브 플랫폼 라이브러리에 액세스할 수 있음.
  • 37. Mobile Architecture Overview 2017 Architecture Android Architecture Android Platform Architecture Java API 프레임워크 • Android OS의 전체 기능 세트는 Java 언어로 작성된 API를 통해 액세스할 수 있음. • 핵심 모듈식 시스템 구성 요소 및 서비스 재활용을 단순화하여 Android 앱을 제작하는 데 필요한 빌딩 블록을 구성. 기능이 풍부한 확장 가능한 뷰 시스템 : 목록, 그리드, 텍스트 상자, 버튼 및 삽입 가능한 웹 브라우저를 포함하여 앱의 UI를 빌드하는 데 사용 가능 Resource Manager : 다국어 문자열, 그래픽 및 레이아웃 파일과 같은 코드가 아닌 리소스에 대한 액세스 제공 Notification Manager : 모든 앱이 상태 표시줄에 사용자 지정 알림을 표시할 수 있도록 지원 Activity Manager : 앱의 수명 주기를 관리하고 공통 Navigation 백 스택 제공 Contents Provider : 앱이 주소록 앱과 같은 다른 앱의 데이터에 액세스하거나 자신의 데이터를 공유할 수 있도록 지원 • 개발자는 Android 시스템 앱이 사용하는 것과 동일한 프레임워크 API에 대하여 전체 액세스 권한을 가짐 시스템 앱 • Android는 이메일, SMS 메시징, 캘린더, 인터넷 검색, 주소록 등의 주요 앱 세트와 함께 제공. • 기본적으로 포함된 앱과 사용자가 설치한 앱을 구별되는 특별한 상태가 없음. • 타사 앱이 사용자의 기본 웹 브라우저, SMS 메시징 또는 기본 키보드가 될 수 있음. (단, 시스템의 설정 앱 등 몇 가지 예외가 적용될 수 있음). • 시스템 앱은 사용자를 위한 앱으로도 작동하고 개발자가 자신의 앱에서 액세스할 수 있는 용도로도 작동.
  • 38. Mobile Architecture Overview 2017 Architecture Android Architecture Android Activity Lifecycle • Activity 인스턴스 수명 주기의 특정 단계에 부합하는 Call Back 메서드를 호출하여 해당 인스턴스 내 코드를 실행함. • 액티비티를 시작하는 순차적인 Call Back 메서드가 있으며, 액티비티를 소멸시키는 순차적인 Call Back 메서드가 있음. • 액티비티 수명 주기에 맞는 적절한 Call Back 메서드를 구현하여 앱이 제대로 동작하도록 보장하게 함. 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 충돌하지 않도록 해야함. 사용자가 앱을 활발하게 사용하지 않는 경우, 소중한 시스템 리소스를 소비하지 않도록 해야 함. 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태를 손실하지 않도록 해야 함. 화면이 가로 방향과 세로 방향 간에 회전할 경우, 충돌하거나 사용자의 진행 상태를 손실하지 않도록 해야함.
  • 39. Mobile Architecture Overview 2017 Architecture Android Architecture Android Activity Lifecycle 메서드 설명 onCreate() • 액티비티가 처음 생성되었을 때 호출. • 일반적인 설정을 모두 수행. (뷰 생성, 목록에 데이터 바인딩하기 등.) • 액티비티의 이전 상태를 포함한 번들 객체가 전달됨. • 뒤에는 항상 onStart()가 호출됨. onRestart() • 액티비티가 중단되었다가 다시 시작되기 직전에 호출. • 뒤에는 항상 onStart()가 호출됨. onStart() • 액티비티가 사용자에게 표시되기 직전에 호출됨. • 액티비티가 전경으로 나오면 onResume()이 뒤에 호출, • 액티비티가 숨겨지면 onStop()이 뒤에 호출됨 onResume() • 액티비티가 시작되고 사용자와 상호작용하기 직전에 호출. • 이 시점에서 액티비티는 스택의 맨 위에 있으며, 사용자가 정보를 확 인. • 이 뒤에는 항상 onPause()가 호출됨. onPause() • 시스템이 다른 액티비티를 재개하기 직전 호출됨. • 일반적으로 데이터를 유지하기 위해 저장되지 않은 변경 사항을 커 밋함. • CPU를 소모하는 작업을 중단하는 등의 여러 가지 용도에 사용됨. • 무슨 일을 하든 매우 빨리 끝내야 함. • 액티비티가 다시 전경으로 돌아오면 onResume()이 뒤에 호출됨. • 액티비티가 사용자에게 보이지 않게 되면 onStop()이 뒤에 호출됨. onStop() • 액티비티가 더 이상 사용자에게 표시되지 않게 되면 호출됨. • 액티비티가 소멸되거나, 다른 액티비티가 재개되어 덮고 있음. • 액티비티가 다시 사용자와 상호작용하면 onRestart()가 뒤에 호출됨. • 액티비티가 사라지면 onDestroy()가 뒤에 호출됨. onDestroy() • 액티비티가 소멸되기 전에 호출됨. • 액티비티가 받는 마지막 호출. • 액티비티가 완료되는 중이기 때문(누군가가 여기에 finish()를 호출해 서)일 수도 있고, 시스템이 공간을 절약하기 위해 액티비티의 이 인스 턴스를 일시적으로 소멸시키는 중이기 때문.
  • 40. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Architecture Layer
  • 41. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Architecture Layer Cocoa Touch • iOS 운영 체제에서 실행되는 애플리케이션을 작성하기위한 UI 프레임 워크. • 매우 빠른 속도로 실행되도록 컴파일 된 객체 지향 언어 인 Objective-C로 구현 된 클래스를 주로 포함. • 고유한 유연성을 제공하는 진정한 동적 런타임을 사용. • Objective-C는 C의 상위 집합이기 때문에 C와 C ++를 Cocoa Touch 응용 프로그램에 쉽게 혼합. • 멀티 태스킹, 터치 기반 입력, 푸시 알림 및 많은 고급 시스템 서비스에 대한 앱 인프라 제공. Cocoa Touch  Storyboards  Documents  Gesturing  Multitasking  Notifications  UIKit Framework
  • 42. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Architecture Layer Media Layer • 멀티미디어 경험을 구현하는 데 사용하는 그래픽, 오디오 및 비디오 기술이 포함되어 있음. • 이 레이어의 기술을 통해 멋지게 보이는 훌륭한 앱을 쉽게 만들 수 있음. Media Layer  Graphic Technologies  Audio Technologies  Video Technologies  AirPlay
  • 43. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Architecture Layer Core Services Layer • 앱에 필요한 기본 시스템 서비스가 포함되어 있음. • Core Foundation 및 Core Framework가 핵심 서비스로, 모든 앱에서 사용하는 기본 유형을 정의하고 Location, iCloud, 소셜 미디어 및 네트워킹과 같은 기능을 지원하는 기술도 제공. Core Services Layer  iCloud  In-App purchase  SQLite  Core Data  Core Location
  • 44. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Architecture Layer Core OS Layer • 다른 고급 기능의 기반이 되는 하위 수준 기능이 포함. • 비록 우리가 이 기능을 응용 프로그램에서 직접 사용하지는 않지만 프레임 워크에서 사용함. • 보안 기능을 구현하거나 외부 하드웨어 액세서리와 통신해야 할 때 이러한 기능을 사용. Core OS Layer  Bluetooth  External Accessories  Accelerator Framework
  • 45. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Application Lifecycle 홈버튼을 눌렀을 때, 전화가 왔을 때와 같이 앱이 화면상에서 보이지 않는 background 상태, 화면에 올라와 있는 상태인 foreground 등과 같은 상태들에 대한 정의. State • Not Running: 앱이 실행되지 않은 상태 • Inactive와 Active 상태를 합쳐서 Foreground 라고 함 • Inactive: 앱이 실행중인 상태 그러나 아무런 이벤트를 받지 않는 상태 • Active: 앱이 실행 중이며 이벤트가 발생한 상태 • Background: 앱이 백그라운드에 있는 상태 그러나 실행되는 코드가 있는 상태 • Suspended: 앱이 백그라운드에 있고 실행되는 코드가 없는 상태
  • 46. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Application Lifecycle Call Back Method • application(_:didFinishLaunching:) - 앱이 처음 시작될 때 실행 • applicationWillResignActive: - 앱이 active 에서 inactive로 이동될 때 실행 • applicationDidEnterBackground: - 앱이 background 상태일 때 실행 • applicationWillEnterForeground: - 앱이 background에서 foreground로 이동 될때 실행 (아직 foreground에서 실행중이진 않음) • applicationDidBecomeActive: - 앱이 active상태가 되어 실행 중일 때 • applicationWillTerminate: - 앱이 종료될 때 실행
  • 47. Mobile Architecture Overview 2017 Architecture iOS Architecture iOS Application Lifecycle 복수의 뷰 컨트롤러가 경우 각각의 뷰 컨트롤러는 자신만의 생명주기를 가짐. 화면상에 등장 할 때, 사라질 때 등 상황에 맞춰서 함수들이 호출. • viewDidLoad - 해당 뷰컨트롤러 클래스가 생성될 때 (viewWillAppear전에 실행) 실행. Low memory와 같은 특별한 경우가 아니라면 딱 한번만 실행되기 때문에 리소스 초기화에 사용. • viewWillAppear – View가 화면에 나타나기 직전에 실행. View가 나타나기 직전에 항상 실행되기 때문에 해당 뷰 컨트롤러가 나타나기 직전마다 일어나는 작업 수행 • viewDidAppear - View가 화면에 나타난 직후에 실행. 화면에 적용될 애니메이션을 그리거나 API로 부터 정보를 받아와 화면을 업데이트 할 때 이곳에서 수행. 지나치게 빨리 애니메이션을 그리거나 API에서 정보를 받아와 뷰 컨트롤러를 업데이트 할 경우 화면에 반영되지 않음. • viewWillDidDisappear - 뷰 컨트롤러가 화면에 나타난 직전/직후에 실행.
  • 48. Mobile Architecture Overview 2017 Architecture iOS Architecture Apple’s MVC Pattern • MVC 패턴은 사용자에게 보여지는 측면을 담당하는 View 와 데이터에 관한 Model, 그리고 그것들을 관리하는 Controller에 관한 패턴. • Server Side Application 에서도 많이 사용하지만 UI 계층에서도 자주 사용하는 패턴. • 개선된 많은 패턴 있음. (MVVM, FLUX 등) • 애플 iOS 프로그래밍에서 사용하는 MVC 패턴은 View의 수명주기에 깊게 관여하기 때문에 많은 View Controller를 작성하도록 권장함. • 비즈니스 로직과 데이터 변환을 Controller 에서 담당하며, View에 작업량을 줄이는 데는 효과 없음. • 컨트롤러는 View의 로직을 위임 받아 Model 과 View 간의 데이터 전송을 담당. View Controller Model Notifies Owns and Updates View Life Cycle UIView UIViewController
  • 49. Mobile Architecture Overview 2017 Architecture iOS Architecture Lifecycle 비교 onCreate onStart onResume viewWillAppear viewDidLoad onPause onStop onDestroy viewWillDisapear viewDidUnload dealloc onRestartRunning Running Activity start, Xml layout loading. Activity visible to user Partially visible Activity no longer visible Activity is destroyed View loaded from nib file View appear to user View disappear to user View release from memory Android iOS
  • 50. Mobile Architecture Overview 2017 Architecture Hybrid Architecture Cordova Architecture 하드웨어 지원 플러그인 • Accelerometer : 가속도 센서 • Camera • Capture : 화면 캡처 • Compass : 나침반 • Connection • Contacts • Device • Events • File • Geolocation • Globalization • InAppBrowser • Media • Notification • Splashscreen : 시작화면
  • 51. Mobile Architecture Overview 2017 Architecture Hybrid Architecture Cordova Architecture • 네이티브 모바일 애플리케이션 컨테이너 안에 WebView. • WebView 로딩 될 오프라인 HTML 기반의 웹 애플리케이션을 로딩. • 웹 애플리케이션은 전통적인 웹 개발 방식을 사용하며, Cordova JavaScript Library를 적재함. • Hot Code Push 라는 방식으로 웹 애플리케이션에 대한 부분을 네트워크를 통해 업데이트 가능 함. Hardware Operating System (iOS, Android) Cordova Library (libs/cordova-*.jar) Custom Library (libs/*.jar) Native Code (src/*.java) Native Mobile Application WebView (HTML Rendering Engine) Web App (assets/www/index.htm, *.css, *.js) HTML, CSS, Resources JavaScript Cordova JavaScript Interface (assets/www/cordova.js) Direct JavaScript API Cordova JavaScript API Cordova Native API OS API
  • 52. Mobile Architecture Overview Enterprise Solution MDM MAM MEAP MADP MCM
  • 53. Mobile Architecture Overview 2017 Enterprise Solution MDM • 직원의 생산성을 유지하는 동시에 기업 정책을 위반하지 않도록 통제하는 솔루션. • 주로 기업 데이터 분리, 전자메일 보안, 기업 문서 보안, 기업 정책 시행 등을 다양한 휴대용 장치에 적용. • On-premise 나 클라우드 기반으로 구현 MDM (Mobile Device Management)
  • 54. Mobile Architecture Overview 2017 Enterprise Solution MDM • 직원의 생산성을 유지하는 동시에 기업 정책을 위반하지 않도록 통제하는 솔루션. • 주로 기업 데이터 분리, 전자메일 보안, 기업 문서 보안, 기업 정책 시행 등을 다양한 휴대용 장치에 적용. • On-premise 나 클라우드 기반으로 구현 Mobile Device Management • 하나의 플랫폼으로 모든 모바일 디바이스를 관리. • 시간적, 공간적, 논리적, 그룹별 디바이스 정책을 설정. • 디바이스 관리, 리포팅, 시스템 업데이트, 설치에 대하여 중앙 관리 • 원격 디바이스 설정, 잠금, 초기화 기능 • 앱 배포와 디바이스 잠금. • 디바이스 및 애플리케이션 사용 제한 • 제조사가 아니면 솔루션 개발의 어려움.
  • 55. Mobile Architecture Overview 2017 Enterprise Solution MDM Mobile Device Management 기능 • 정책 적용 MDM 사용자에게 여러 종류의 정책을 적용할 수 있음. • 개인 정책 기업 환경에 맞게 맞춤 설정이 가능. • 디바이스 플랫폼 Android, iOS, 윈도우, 블랙베리 디바이스에 대한 고급 관리 정책. • 기업 데이터를 사용하는 디바이스에 대한 규정 정책/룰을 설정하는 기능. • 기업 네트워크를 위한 VPN에 대한 설정 기능. • 디바이스에서 사용할 수 있는 애플리케이션 목록 관리 및 제한 • 미리 정의 될 수 있는 Wi-Fi 와 핫 스팟 설정 기능. • 탈옥 / 루팅 등 디바이스 해킹 탐지 • 원격 기업 데이터 삭제. • 원격 디바이스 데이터 삭제.
  • 56. Mobile Architecture Overview 2017 Enterprise Solution MAM MAM (Mobile Application Management) • 회사에서 제공하는 스마트폰, 태블릿 상의 비즈니스와 관계되는 애플리케이션에 대한 액세스를 제공, 제어하는 솔루션. • 비즈니스 애플리케이션의 세부적인 제어를 통해 기업의 데이터를 보호. • 기업 모빌리티 관리 제품군에 포함
  • 57. Mobile Architecture Overview 2017 Enterprise Solution MAM • 기업 앱 스토어를 통해 모바일 애플리케이션을 프로비저닝, 업데이트 및 제거를 제어하고, 성능 및 사용을 모니터링하며 데이터를 원격에서 제거 하는 기능을 제공. • 다음과 같은 핵심 기능을 제공. 앱 배포 (기업 앱스토어) 앱 업데이트 성능 모니터링 사용자 인증 오류 로그 리포팅 사용자 & 그룹 접근 통제 애플리케이션 버전 관리 애플리케이션 형상 관리 푸시 서비스 리포팅 과 추적 사용자 분석 이벤트 관리 애플리케이션 빌드 Mobile Application Management 기능
  • 58. Mobile Architecture Overview 2017 Enterprise Solution MAM • MDM은 디바이스에 초점이 되어 있다면 MAM은 애플리케이션을 목표로 함. • 두개가 포함되는 솔루션 형태도 있음. Mobile Device Management 과 Mobile Application Management • MDM - OTA - 원격 설정 - 디바이스 보안 - 백업/복구 - 네트워크 사용과 지원 - 원격 잠금과 삭제 - 소프트웨어 설치 • MAM - 앱 배포 - 앱 보안 - 앱 업데이트 - 사용자 인증 - 사용자 인가 - 앱 버전 체크 - 푸시 서비스 - 리포팅과 트레킹.
  • 59. Mobile Architecture Overview 2017 Enterprise Solution MEAP • 모바일 애플리케이션 개발을 쉽게 할 수 있도록 가능케 하는 제품 및 서비스의 모음. • 2008년 가트너 보고서에서 “멀티 채널 액세스 게이트웨이“로 변경. • 배포 뿐 만 아니라 라이프 사이클 전반에 걸쳐 장치, 네트워크 및 사용자 그룹의 다양성을 관리함으로써 모바일 소프트웨어 개발의 어려움을 해결함. • 모바일 애플리케이션을 한번 개발하고 기본 비즈니스 로직을 변경하지 않고 다양한 모바일 장치에 배포 가능. • 플랫폼 애플리케이션은 단일 인프라에서 애플리케이션을 배포 함. • 사용자의 규모에 맞춰 조정 하고 온라인 및 오프라인에서도 사용 가능하게 함. • 높은 수준의 개발언어와 쉬운 개발 템플릿을 제공함. • 모바일 애플리케이션의 개발 기간을 단축하며, 배포에 필요한 프로그래밍 지식이 상대적으로 적게 필요함. MEAP (Mobile Enterprise Application Platform)
  • 60. Mobile Architecture Overview 2017 Enterprise Solution MEAP 구조 • 모바일 미들웨어 서버와 클라이언트 애플리케이션의 두 부분으로 구성. • 미들웨어 서버는 시스템의 통합, 보안, 통신, 확장성, 크로스플랫폼 지원 등을 처리. • 미들웨어 서버에 저장되는 데이터는 없으며, Back-End 시스템에서 모바일 애플리케이션 데이터를 관리. • 애플리케이션을 개발하고 조정할 수 있는 모바일 Configuration/개발 도구가 제공. • 모바일 애플리케이션은 설치형 앱 이나 브라우저에서 Rendering 되는 방식을 제공함. • 애플리케이션의 복잡성, 장치지원, 사용자 경험, 요구 사항 및 네트워크 가용성, 애플리케이션 가용성 측면의 기능을 제공. 특징과 기능 • 여러 모바일 장치와 운영체제를 지원하기 위하여, 여러가지 코드를 유지하지 않아도 됨. • 통합연결, 보안, 앱 관리가 지원되는 모바일 미들웨어 서버가 포함됨. • 사용자 정의형 앱을 개발하는 경우 코드로 작성하지 않고 4GL기술을 사용함. (이클립스와 같은 업계 표준 IDE에 플러그인 형태로 도구가 제공) • JavaScript UI 프레임워크나 PhoneGap (Cordova), Appcelerator와 같은 모바일 컨테이너가 IDE에 통합되어 있음. 단점 • 복잡한 UI를 지원하지 못하고, 신규 버전에 대한 지원이 느리며, 최적화 지원이 미흡. • 솔루션에서 지원하지 못하는 부분은 개별 SI가 필요. Mobile Enterprise Application Platform
  • 61. Mobile Architecture Overview 2017 Enterprise Solution MEAP Mobile Enterprise Application Platform 도입 사례 – SAP SYBASE UNWIRED PLATFORM 기업명 MEAP 솔루션 특징 적용사례 Antenna Software AMP • iOS, 안드로이드, 블랙베리, 윈도모바일, 심비안 등 지원 • 시장, 기술 선도 기업으로 평가(Gatner) KT 모바일 오피스 SAP (Sybase) SUP (Sybase Unwired Platform) • iOS, 윈도모바일, 블랙베리 지원 • Visual Studio, Eclipse 등 보편적 IDE를 통합 삼성 SDS 미국법인 한국IBM SPoSA (Smartphone oriented Service Architecture) • iOS, 안드로이드, 윈도모바일 지원 • 셀라돈(Celadon, 위치 인식 기반 플랫폼)에 기반 (IBM, 정통부 공동 투자) • 와이파이 LBS, 디바이스 콜레보레이션 등 다양한 추가 기능 제공 아모레퍼시픽 모바 일 그룹웨어, SKT 파 일럿 프로젝트 등 Oracle ADF (Application Development Framework) Mobile • Web, Native 앱 (제한적) 지원 • MVC 아키텍처 • AJAX 기반 클라이언트 UI 컴퍼넌트 메리츠 금융정보 서 비스와 전략적 제휴 WorkLight WorkLight Platform • iOS, 안드로이드, 블랙베리 지원 • Hybrid Coding IDE 롯데카드 ‘스마트 롯 데’ (고객용 모바일 서 비스)
  • 62. Mobile Architecture Overview 2017 Enterprise Solution MEAP Mobile Enterprise Application Platform 도입 사례 - 신한은행
  • 63. Mobile Architecture Overview 2017 Enterprise Solution MADP • 기업용 모바일 애플리케이션 개발 플랫폼. • 모바일 애플리케이션 개발을 할 수 있는 모든 서비스와 제품을 포함하는 그룹 • 다양한 모바일 장비, 사용자 그룹 및 네트워크 등을 기반으로 하는 모바일 소프트웨어 개발 어려움을 해소. • 배포 뿐만 아니라 모바일 애플리케이션 전체 생명 주기 동안 다양한 장치를 관리. • 일반적으로 모바일 클라이언트 애플리케이션과 모바일 미들웨어 서버로 구성됨. • 미들웨어 서버는 데이터를 저장하지 않고, 보안, 시스템통합, 확장성, 통신, 플랫폼간 지원 등을 통해 데이터를 관리. • 일반 사용자를 대상으로 하는 앱을 제공해야 하는 경우 많이 선택됨.. MADP (Mobile Application Development Platform)
  • 64. Mobile Architecture Overview 2017 Enterprise Solution MADP 특징 • 엔터프라이즈와의 모바일 인터페이스 단일 포인트 • 모바일 애플리케이션 전반의 서비스 재사용 성. • 엔터프라이즈 서비스 발견. • 모바일 친화적 인 모델링. • IDE 기반 애플리케이션 개발 – 미들웨어 모델링 Back End 통합. • 앱 데이터 경로에 대한 단일 보안 전략을 배포하는 데 도움이 됨. • 엔터프라이즈 이동성을 위한 캐시 원활한 동기화 지원. • 장치 대기열 가시성 및 채널 제어 향상 Mobile Application Development Platform 동향
  • 65. Mobile Architecture Overview 2017 Enterprise Solution MADP • 기업 모빌리티의 기술 발전과 함께 MEAP는 MADP로 발전되고 있음. • 대부분의 모바일 앱 개발 플랫폼 (MADP)은 디자인 프레임 워크, 백엔드 통합, 미들웨어 지원 등과 같은 서비스를 소비자 및 엔터프라이즈 지향 앱 모두에 제공함. • 오늘날의 MADP는 최대한 많은 기능이 추가되었음. • MADP가 MEAP, MDM / MAM 및 응용 프로그램 개발을 통해 제공되는 서비스의 조합을 포함 해야하는 시간이 필요함. Mobile Application Development Platform 동향
  • 66. Mobile Architecture Overview 2017 Enterprise Solution MCM • 휴대 전화, 스마트 폰 및 PDA와 같은 모바일 장치에 콘텐츠 및 서비스를 저장하고 전달할 수 있는 콘텐츠 관리 시스템 (CMS). • 개별 시스템으로 동작하거나 멀티 채널 컨텐츠 전달이 가능한 대형 컨텐츠 관리 시스템의 기능 또는 모듈, 애드온 형태로 제공. • 모바일 컨텐츠 전송은 가변적인 디바이스 용량, 작은 화면 크기, 제한된 무선 대역폭, 작은 스토리지 용량 및 비교적 약한 디바이스 프로세서를 포함하는 모바일 환경 고유의 제한 사항을 광범위하게 가지고 있음. • 모바일 장치가 점점 유비쿼터스화되고 복잡해짐에 따라 요구 증가. • 처음에는 벨소리, 게임, 문자 메시지, 뉴스 및 기타 관련 콘텐츠가 포함 된 B2C 모바일 시장에서 출발. • B2B 및 B2E (B2B) 상황에서도 뿌리를 내리고 있기 때문에 기업의 비즈니스 파트너 및 모바일 관련 인력에 대한 효율적인 정보 및 기능을 제공. MCM (Mobile Contents Management)
  • 67. Mobile Architecture Overview 2017 Enterprise Solution MCM Multi-channel content delivery • 사용자는 중앙 컨텐츠 저장소를 관리하는 동시에 휴대폰, 스마트 폰, 태블릿 및 기타 모바일 디바이스와 같은 모바일 디바이스로 컨텐츠를 전달할 수 있음. 콘텐츠는 장치 별 스타일을 적용 할 수 있는 원시 형태로 저장. Content access control • 권한, 인증 및 각각의 컨텐츠에 대한 액세스 승인이 포함됨. 대부분의 경우 다운로드 제어, 특정 사용자에 대한 삭제, 시간 별 액세스가 포함. • 인증을 위해서 사용자 ID와 패스워드를 가진 기본 인증을 가져야 하며 보안 강화를 위해 IP 인증 및 모바일 장치 인증을 지원함. Mobile Contents Management Features
  • 68. Mobile Architecture Overview 2017 Enterprise Solution MCM Specialized templating system • 기존의 웹 콘텐츠 관리 시스템은 소수의 웹 브라우저에서만 템플릿을 처리하지만 모바일 CMS 템플릿은 용량과 제한이 다른 다양한 대상 장치에 맞춰야 함. • 템플릿을 적용하는 데는 다중 클라이언트 및 다중 사이트의 방법이 있음. • 멀티 클라이언트 접근 방식을 사용하면 동일한 도메인에 있는 사이트의 모든 버전을 볼 수 있으며 템플릿은 보기에 사용 된 기기를 기반으로 제공. • 다중 사이트 접근 방식은 모바일 사이트를 타겟팅 된 하위 도메인으로 제공. (m.ktds.com) Location-based content delivery 위치 기반 콘텐츠 전달은 정보, 광고,지도, 길 찾기 및 뉴스와 같은 대상 콘텐츠를 현재 물리적 위치를 기반으로 모바일 장치에 제공. Mobile Contents Management Features
  • 69. Mobile Architecture Overview 2017 Enterprise Solution Mobile App Development Trend in 2017 • 모바일 앱 개발은 오늘날 스마트 폰에서만 일어나지는 않습니다. 이제는 웨어러블, 스마트 카, 집과 같은 다른 장치에서 사용하기 위해 개발. • Survey Monkey는 2017 년까지 모바일 앱의 전세계 매출이 962.5 %로 증가 할 것으로 예측하고 있음. • 다른 보고서에 따르면 기기 별로 모바일 앱 사용률이 증가하면 2020 년까지 업계 성장이 1,000 억 달러를 상회 할 것으로 예상함. Increase in progressive web apps (PWAs) • Progressive 웹 앱은 모바일 앱처럼 느껴지도록 디자인 된 웹 사이트. • 인터넷상의 정보에 액세스하기위한 모바일 장치의 사용이 늘어남에 따라 이들이 중소기업 모두에게 인기가 됨. • PWA는 Google 및 기타 검색 엔진이 모바일 친화적 웹 사이트에 우선 순위를 부여하는 모바일 기반 검색 결과 알고리즘을 도입함. • PWA가 제공 할 수 있는 경제성과 사용자 경험 향상으로 중소기업 응용 프로그램 개발. 2017년 모바일 개발 트렌드
  • 70. Mobile Architecture Overview 2017 Enterprise Solution Mobile App Development Trend in 2017 Increase in location based services • 위치 추적 및 탐색 도구를 비롯한 위치 기반 서비스 제공에 더 많은 초점. 이 추세는 2017 년에 더 증가 할 것으로 예상됨. • 위치 기반 서비스는 거래 및 정보를 실시간으로 제공하기 위해 더욱 발전 할 것으로 예상 됨. • 소매업, 실내 매핑, 내비게이션, 보안 및 기타 다양한 분야의 기능을 제공하도록 구현 할 수 있음. Shift to streaming technology • 넷플릭스, 유튜브 RED, 아마존 프라임의 인기가 나아지기 만한다면 소비자들은 내년에 스트리밍 기술을 선호하게 될 것이다. • 소비자 행동의 변화는 전통적인 케이블 TV에 가입하는 것과는 대조적으로 콘텐츠를 스트리밍 할 수 있는 경제성과 편리 성 때문에 주로 발생함. • 스트리밍 서비스에 대한 수요가 증가함에 따라 비디오 스트리밍 애플리케이션에 대한 수요가 증가. • 수요는 2017 년을 정점으로 예측. 2017년 모바일 개발 트렌드
  • 71. Mobile Architecture Overview 2017 Enterprise Solution Mobile App Development Trend in 2017 Increased use of augmented reality in apps • Augmented Reality (AR) 앱은 한 때는 변칙적 인 것으로 여겨졌으나 웨어러블 기기와 스마트폰이 늘어남에 따라 AR 사용 증가. • 웨어러블 플래폼은 AR 도구를 이전에 생각했던 것보다 더 생산적이고 효과적으로 적용 할 수 있는 환경을 제공함. Integration of machine learning apps • Facebook, Google, IBM 및 Microsoft와 같은 기술 회사는 인공 지능과 기계 학습에 투자하고 있음. • 기술 대기업은 인간 개입없이 운영되는 소비자 서비스로의 전환을 위한 토대를 마련하고 있음. • 많은 사람들 인공지능 및 기계학습 서비스를 제공 할 것이라고 믿고 있음. • 인공 지능과 기계 학습은 2017년에 관련 모바일 앱의 개발을 이끌어 낼 것이며, 사용자 환경을 개선하고 선호도 또는 위치에 따라 소비자에게 향상된 서비스를 제공하게 됨. 2017년 모바일 개발 트렌드
  • 72. Mobile Architecture Overview 2017 Enterprise Solution Mobile App Development Trend in 2017 Shift to streaming technology • 넷플릭스, 유튜브 RED, 아마존 프라임의 인기가 나아지기 만한다면 소비자들은 내년에 스트리밍 기술을 선호하게 될 것이다. • 소비자 행동의 변화는 전통적인 케이블 TV에 가입하는 것과는 대조적으로 콘텐츠를 스트리밍 할 수 있는 경제성과 편리 성 때문에 주로 발생함. • 스트리밍 서비스에 대한 수요가 증가함에 따라 비디오 스트리밍 애플리케이션에 대한 수요가 증가. • 수요는 2017 년을 정점으로 예측. Increased use of augmented reality in apps • Augmented Reality (AR) 앱은 한 때는 변칙적 인 것으로 여겨졌으나 웨어러블 기기와 스마트폰이 늘어남에 따라 AR 사용 증가. • 웨어러블 플래폼은 AR 도구를 이전에 생각했던 것보다 더 생산적이고 효과적으로 적용 할 수 있는 환경을 제공함. 2017년 모바일 개발 트렌드
  • 73. Mobile Architecture Overview 2017 Enterprise Solution Mobile App Development Trend in 2017 Integration of machine learning apps • Facebook, Google, IBM 및 Microsoft와 같은 기술 회사는 인공 지능과 기계 학습에 투자하고 있음. • 기술 대기업은 인간 개입없이 운영되는 소비자 서비스로의 전환을 위한 토대를 마련하고 있음. • 많은 사람들 인공지능 및 기계학습 서비스를 제공 할 것이라고 믿고 있음. • 인공 지능과 기계 학습은 2017년에 관련 모바일 앱의 개발을 이끌어 낼 것이며, 사용자 환경을 개선하고 선호도 또는 위치에 따라 소비자에게 향상된 서비스를 제공하게 됨. Security will become a critical issue • 기술이 급속도로 급속히 증가함에 따라 보안 위협도 증가함. • 더 많은 사람들이 다양한 작업을 위해 스마트 폰을 사용함에 따라 민감한 개인 데이터를 저장하고 휴대 전화에 공유함에 따라서 스마트 폰의 보안은 더욱 중요해질 것으로 예상됨. • 스마트 폰에서 중요한 정보와 개인 정보를 공유하고 있음에도 불구하고 많은 사람들이 휴대 전화의 보안을 심각하게 생각하지 않음. • 개발자는 자신의 앱에 내장 된 더 많은 보안 기능을 제공 할 예정임. 2017년 모바일 개발 트렌드
  • 74. Mobile Architecture Overview 2017 Enterprise Solution Mobile App Development Trend in 2017 Growth of Internet of Things (IoT) • 상호 연결성을 제공하는 앱이 점점 인기를 얻고 있음. • 적용 분야는 2017 년에 더욱 증가 할 것으로 예상되며 교육, 건강, 스마트 홈, 보안 및 운송과 같은 분야는 IoT의 적용을 실험하고 있음. • 데이터 공유의 증가와 장치가 통신 할 수 있는 더 복잡한 플랫폼이 필요하게 됨. Improved design • 사용자 경험은 앱 디자인 및 개발의 주요 원동력 중 하나. • 결과적으로 앱 개발자는 사용자에게 시각적으로 호소력 있는 앱을 제공하는 데 중점을 두게 됨. • 2017 년에 주목할 디자인 트렌드에는 Splash 스크린, Parallels 그래픽, 분할 스크린, 미세 상호 작용 및 그리드 기반 디자인이 포함됨. Integration of mobile payments • 더 많은 사람들이 정보 검색 및 작업 수행에 휴대폰을 사용함에 따라 개발자는 모바일에서 결제 기능을 통합하기 시작했음. • 구매자는 앱에서 거래를 완료 할 수 있으며 웹 사이트를 방문하지 않아도 됨. • 개발자는 모바일 지불을 용이하게 하는 안전한 방법을 제공해야 함. 2017년 모바일 개발 트렌드
  • 75. Mobile Architecture Overview Backend Architecture Enterprise Architecture Micro Service Architecture OAUTH2.0 Push Server Redhat AeroGear
  • 76. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture Microsoft Architecture • Microsoft 의 Cloud 서비스를 이용한 모바일 Backend Architecture • Mobile Front-End 는 Xamarin 과 PhoneGap, Sencha를 통해 하이브리드로 구성.
  • 77. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture • 전통적인 3-Tier 구조의 Back end Architecture • Cache 구조가 존재함. • 믿을 수 없는 서비스나 관리 할 수 없는 서비스 연동은 Agent 구성. • Cross Cutting Module. Microsoft Architecture
  • 78. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture • Microsoft Intune MAM 솔루션을 기반으로 하는 Architecture. • 자사 솔루션인 Office와 Exchange 서버 등 엔터프라이즈 제품군과의 연계. • 생체 인증 (FIDO) Microsoft Architecture
  • 79. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture • IBM의 모바일 Architecture • 자사의 클라우드 서비스인 BlueMix 와의 통합으로 IoT, AI, BigData 연계 용이. • BlueMix SDKs 를 이용하여 플랫폼 서비스 이용. • 오픈소스의 적극적인 이용. IBM Architecture
  • 80. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture • IaaS, PaaS, SasS의 체계적인 구축으로 쉽게 애플리케이션을 개발할 수 있는 환경 제공. • SaaS를 통해 API Economy라는 개념을 추구 • IaaS, SDN 등을 통한 네트워크 추상화 레이어. IBM Architecture
  • 81. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture • 기존 SOA(Service Orienter Architecture)의 Gateway와 SOAP 통신을 통해 Mobile Gateway Interface 제공 • ERP 같은 레거시 환경으로의 접근을 위한 모빌리티 아키텍처 Oracle Architecture
  • 82. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture • 오라클의 Mobile Application Development Framework • Cordova 와 HTML, JS 기반 • 쉽게 기존 시스템과의 연동하여 모빌리티 제공. Oracle Architecture
  • 83. Mobile Architecture Overview 2017 Backend Architecture Enterprise Architecture • Oracle Mobile Cloud 서비스 Architecture. • Open Source 와 Native Application Development Framework 제공. • 클라우드 방식과 온프리마이즈 방식을 모두 제공. Oracle Architecture
  • 84. Mobile Architecture Overview 2017 Backend Architecture Micro Service Architecture • 응집된 구조의 서버 사이드 구조. • 새로운 서비스 추가 시 모바일에서 연동되는 Endpoint 증가. • 서비스 스케일 조정의 어려움. • 글로벌 서비스의 어려움. 전통적인 모바일 Architecture
  • 85. Mobile Architecture Overview 2017 Backend Architecture Micro Service Architecture • 전통적인 서버사이드 아키텍처 • 성능이나 효율은 좋으나 새로운 서비스 개발의 어려움이 존재함. • 사이드 이펙트 발생 함. • 모듈 재활용성이 떨어짐 • 규모 조절의 어려움이 있음 • 시스템 연동의 어려움이 있음 • 새로운 기술 적용의 어려움. Monolithic Architecture
  • 86. Mobile Architecture Overview 2017 Backend Architecture Micro Service Architecture • 모바일 서비스 측면의 Micro Service Architecture. • 복잡한 서버 사이드 로직을 개별적인 Micro Service 로 분리. • 통합적인 API Gateway를 통해 각각의 서비스 API를 Wrapping. • Cross-Cutting Concern 한 기능을 통합적인 API 관리. • 서비스 Version 별 관리 가능 MSA (Micro Service Architecture) for Mobile
  • 87. Mobile Architecture Overview 2017 Backend Architecture Micro Service Architecture • OOP와 같은 모듈화가 뛰어난 방법을 사용하더라도 쉽게 분리 될 수 있는 모듈로 작성하기 힘듬. • 이러한 요구사항은 실제 애플리케이션 설계와 개발에서 자주 발생. • 이를 횡단 관심(crosscutting concerns)이라고 함. • 핵심 기능을 제외한 중간중간 삽입되어야 될 기능들 (로깅, 보안, 트랜잭션, 예외처리) • 이에 대비해서 해당 시스템의 핵심 가치와 목적이 그대로 드러난 관심 영역을 핵심 관심(core concerns)이라고 부름. • 이런 종류의 핵심 관심사는 기존의 객체지향 분석/설계(OOAD)를 통해 쉽게 모듈화와 추상화가 가능. Crosscutting concerns
  • 88. Mobile Architecture Overview 2017 Backend Architecture Micro Service Architecture • 최신 서버사이드 아키텍처 • 새로운 서비스 개발의 용이함. • 사이드 이펙트가 감소. • 모듈 재활용성이 높아짐. • 규모 조절 용이하며, 클라우드 기술의 발전과 함께 더욱 발전. • 쉽고 가벼운 프로토콜의 사용으로 시스템 및 서비스간의 연동이 용이해짐. • 서비스 별 개별적인 기술 사용 가능. (Polyglot) • Spring Framework 및 대부분의 클라우드 서비스에서 아키텍처 지원 용이함. Micro Service Architecture
  • 89. Mobile Architecture Overview 2017 Backend Architecture Micro Service Architecture SaaS 앱을 만들기 위한 방법론. 한국어 사이트 : https://12factor.net/ko/ • 설정 자동화를 위한 절차(declarative) 를 체계화 하여, 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화 해야 함. • OS에 따라 달라지는 부분을 명확히 하고, 실행 환경 사이의 이식성을 극대화 해야 함. • 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리가 필요 없어야 함. • 개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능해야 함. • 툴, 아키텍처, 개발 방식을 크게 바꾸지 않고 확장(scale up) 할 수 있어야 함. • 어떤 프로그래밍 언어로 작성된 앱에도 적용할 수 있고 백엔드 서비스(데이터베이스, 큐, 메모리 캐시 등)와 다양한 조합으로 사용 할 수 있음. 12 Factors
  • 90. Mobile Architecture Overview 2017 Backend Architecture Micro Service Architecture 1. 코드베이스 : 버전 관리되는 하나의 코드베이스와 다양한 배포 2. 종속성 : 명시적으로 선언되고 분리된 종속성 3. 설정 : 환경(environment)에 저장된 설정 4. 백엔드 서비스 : 백엔드 서비스를 연결된 리소스로 취급 5. 빌드, 릴리즈, 실행 : 철저하게 분리된 빌드와 실행 단계 6. 프로세스 : 애플리케이션을 하나 혹은 여러 개의 무 상태(stateless) 프로세스로 실행 7. 포트 바인딩 : 포트 바인딩을 사용해서 서비스를 공개함 8. 동시성(Concurrency) : 프로세스 모델을 사용한 확장 9. 폐기 가능(Disposability) : 빠른 시작과 graceful shutdown을 통한 안정성 극대화 10. dev/prod 일치 : development, staging, production 환경을 최대한 비슷하게 유지 11. 로그 : 로그를 이벤트 스트림으로 취급 12. Admin 프로세스 : admin/maintenance 작업을 일회성 프로세스로 실행 12 Factors
  • 91. Mobile Architecture Overview 2017 Backend Architecture OAUTH 2.0 인증 • 어떤 사람이나 사물이 실제로 신고된 바로 그 사람(또는 바로 그 것)인지를 판단하는 과정. • 개별 또는 인터넷을 포함한 공공 네트웍에서의 인증은 대개 로그온시 암호의 사용을 통해 이루어짐. • 암호를 알고 있는 사람은 일단 믿을 만한 사용자라고 간주. • 사용자는 꼭 사람을 의미하는 것은 아니며 시스템이나 애플리케이션을 대상으로 할 수 있음. • 자금 교환 등이 수반되는 중요한 거래에서 이 시스템의 약점은, 암호가 종종 도난 당하거나, 우연히 알려지거나 또는 잊혀질 수 있다는데 있음. 인가 • 시스템이나 그 내부의 리소스에 대한 행위를 정의하고 그 행위에 대한 권리 • 인증을 통하여 사용자를 확인하고 그 사용자의 권한을 인가함. 인증과 인가
  • 92. Mobile Architecture Overview 2017 Backend Architecture OAUTH 2.0 OAuth 인증 수행 과정에는 다음과 같은 역할 모델이 존재. 자원서버 (Resource Server) 보호되어야 할 데이터나 이미지와 같은 자원들을 제공하는 서버를 말한다. 보통 Restful-API를 통해 제공되며 OAuth 를 통해 보호되야 하는 대상을 뜻함. 자원 소유자 (Resource Owner) 자원서버에서 제공되는 데이터의 실제 소유자를 뜻한다. 사용자의 이미지나 데이터들을 사용자 자신만이 사용 할 수 있거나 위임할 수 있는 권한 주체. 클라이언트 (Client) 자원에 대한 소유자를 대신 하여 자원서버를 통해 제공되는 데이터나 미디어에 접근을 위임 받는 Application이나 시스템을 뜻함. 권한서버 (Authorization Server) 자원서버에서 제공되는 자원 소유자의 데이터나 미디어에 접근하기 위한 토큰을 발행하는 OAuth 인증을 수행하는 서버이다. 인증 과정에서 명시적/묵시적으로 사용자의 동의를 얻어야 함. 역할 모델
  • 93. Mobile Architecture Overview 2017 Backend Architecture OAUTH 2.0 Client Credential Grant Flow Client Credentials Grant Flow 방식은 해당 자원 서버에 대한 자원에 대해 사용 권한을 위임 받는 경우에 사용. 다시 말해 사용자를 대신하는 것이 아닌 시스템이나 Application을 대신하는 경우에 사용. Client Credentials Grant Flow 방식은 사용자 정보를 필요로 하지 않음. 사용자에 상관없이 Access Token을 요청. Client Credentials Grant Flow 방식은 Client 의 인증정보만을 가지고 인증하며, Access Token 발행을 위해 HTTP Basic Authentication 헤더와 POST 파라미터를 사용하여 ‘client_id’, ‘client_secret’, ‘grant_type’ 의 정보를 넘겨 인증하게 된다. Grant Flow
  • 94. Mobile Architecture Overview 2017 Backend Architecture OAUTH 2.0 Resource Owner Password Credential Grant Flow Resource Owner Password Credentials Grant Flow 방식은 자원 서버에서 제공하는 자신의 자원에 접근 하는 Application에게 권한을 위임하는 경우에 사용하게 된다. 이때 Application은 서드파티에 개발자가 개발한 Application 보다는 자원 서버를 제공하는 업체에서 만든 공식 Application 에 사용할 것을 권고한다. 서드 파티 개발자가 만드는 Application 같은 경우는 사용자 정보와 비밀번호가 노출 될 위험이 있으므로 추천 하지 않는다. Resource Owner Password Credentails Grant Flow 방식은 권한 위임을 하는 시스템이나 Applicaton에 대한 사용자 인증을 단한 번만 하면 된다. 하지만 만료 시간이 있어 Token의 만료가 도래하게 되면 Token에 대한 갱신이 필요하게 된다. Grant Flow
  • 95. Mobile Architecture Overview 2017 Backend Architecture OAUTH 2.0 Authorization Code Grant Flow Authorization Code Grant Flow 방식은 Third-Party 개발자가 모바일이나 웹기반의 어플리케이션을 만드는 경우 권한을 위임하는 경우 사용하게 된다. Grant Flow
  • 96. Mobile Architecture Overview 2017 Backend Architecture OAUTH 2.0 Implicit Grant Flow Implicit Grant Flow는 Third-Party 개발자가 Client를 Javascript 기반으로 개발 할 경우 사용한다 Grant Flow
  • 97. Mobile Architecture Overview 2017 Backend Architecture Push • APNS(Apple Push Notification Service)는 애플 사에서 모바일 서비스를 위해 만든 Push 서비스 플랫폼. • 2009년 6월 17일 iOS 3.0에 포함되어 정식으로 출시됨. • 서드 파티(3rd-party) 응용 서버로부터 전달된 메시지가 항상 열려 있는 IP 연결을 통해 아이폰, 아이팟, 아이패드 등의 기기로 전달됨. • iOS 3.0 환경에서는 백그라운드 프로세스를 지원하지 않기 때문에, Polling 방식을 통하여 메시지를 획득할 수 없음. • APNS에서는 전달하는 Push 메시지는 한쪽 방향으로, 순서대로 메시지를 전달됨. APNS (Apple Push Notification Service)
  • 98. Mobile Architecture Overview 2017 Backend Architecture Push • PNS를 사용하기 위해 애플 장비에 설치된 애플리케이션은 APNS 서버로부터 Device Token을 발급함. • 발급받은 Device Token을 다시 애플리케이션 서버로 전달. APNS (Apple Push Notification Service)
  • 99. Mobile Architecture Overview 2017 Backend Architecture Push Server • Device Token을 전달받은 애플리케이션 서버는 APNS 서버와 보안 연결. • 보안 연결 시 할 때 자신을 인증하기 위해 필요한 SSL 인증서(애플리케이션 ID를 이용하여 생성)를 준비되어야 함. APNS (Apple Push Notification Service)
  • 100. Mobile Architecture Overview 2017 Backend Architecture Push Server • 애플리케이션 서버가 Push로 전달해야 할 메시지가 있다면 암호화된 채널(TLS: Transport Layer Security, 구 SSL)을 통해 APNS 서버로 메시지 전송. • 특정 장비에서 이미 삭제된 애플리케이션으로 Push 메시지를 전달하려고 시도할 경우 해당 장비는 Push 메시지 수신을 거부. • APNS는 해당 애플리케이션 서버가 연결한 피드백(feedback) 인터페이스를 통하여 삭제된 애플리케이션이 할당 받았던 Device Token과 시간 정보를 전달한다. APNS (Apple Push Notification Service)
  • 101. Mobile Architecture Overview 2017 Backend Architecture Push Server • C2DM(Cloud to Device Messaging)은 구글의 Android 2.2 버전(Froyo)부터 사용. • 구글 서비스를 기반으로 Android 마켓을 이용하는 모든 장비에 메시지를 전송. • Android 운영체제가 설치된 스마트폰에서 유저가 구글 계정으로 로그인해야만 이용이 가능. • 서드 파티 서버가 간단한 메시지를 Android 애플리케이션으로 전달하는 것을 허용. • C2DM 서비스는 대용량의 콘텐츠를 전송하도록 설계되지 않음. • 애플리케이션에 새로운 데이터가 있음을 알려주고, 애플리케이션이 해당 서버에 접속해서 데이터를 전송 받는 구조. C2DM (Cloud to Device Messaging)
  • 102. Mobile Architecture Overview 2017 Backend Architecture Push Server • FCM (Firebase Cloud Messaging)은 서버 응용 프로그램과 모바일 클라이언트 응용 프로그램 간의 메시지 전송, 라우팅 및 대기열 처리를 담당하는 Cross Platform Service. • FCM은 Google 클라우드 메시징 (GCM)의 후속 제품이며 Google Play 서비스를 기반으로 제작. • FCM은 메시지를 보낸 사용자와 클라이언트 애플리케이션 사이의 중개자 역할. • GCM과 달리 FCM을 사용하면 Firebase Console Notifications GUI를 통해 직접 클라이언트 응용 프로그램에 메시지를 전송. Firebase Overview
  • 103. Mobile Architecture Overview 2017 Backend Architecture Push Server • 응용 프로그램 서버는 FCM을 사용하여 단일 장치, 장치 그룹 또는 항목에 가입 한 여러 장치에 메시지를 전송. • 클라이언트 애플리케이션은 FCM을 사용하여 응용 프로그램 서버의 다운 스트림 메시지 (예 : 원격 알림 수신)에 가입. • 다운 스트림 메시지가 앱 서버에서 클라이언트 앱으로 전송되면 앱 서버는 Google에서 제공하는 FCM 연결 서버로 메시지를 전송. • FCM 연결 서버는 차례대로 클라이언트 응용 프로그램을 실행중인 장치로 메시지를 전달. • 메시지는 HTTP 또는 XMPP (Extensible Messaging and Presence Protocol)를 통해 전송. • 클라이언트 응용 프로그램은 항상 연결되거나 실행되는 것은 아니기 때문에 FCM 연결 서버는 메시지를 대기열에 넣고 저장하여 다시 연결되고 사용 가능하게 되면 클라이언트 응용 프로그램으로 전송. Firebase Cloud Messaging in action
  • 104. Mobile Architecture Overview 2017 Backend Architecture Push Server • FCM은 다음 자격 증명을 사용하여 응용 프로그램 서버와 클라이언트 응용 프로그램을 식별하고, 이를 통해 메시지 트랜잭션을 인증. • Sender ID : Firebase 프로젝트를 만들 때 할당되는 고유 한 숫자 값. 메시지를 보낼 수 있는 각 응용 서버를 식별. • API Key : 응용 서버가 Firebase 서비스에 액세스 인증 시 사용. (서버 키 또는 웹 API Key) • App ID : FCM에서 메시지를 수신하기 위해 등록하는 클라이언트 애플리케이션 ID. • Registration Token : 해당 장치의 클라이언트 애플리케이션의 FCM ID. 런타임에 생성. (인스턴스 ID라고도 함). 애플리케이션이 장치에서 실행하여 FCM에 처음 등록 할 때 등록. FCM에서 메시지를 수신하기 위해 클라이언트 애플리케이션의 인스턴스를 인증. Firebase Cloud Messaging in action
  • 105. Mobile Architecture Overview 2017 Backend Architecture Push Server • 메시지를 전송 하기 위해서는 클라이언트 애플리케이션을 FCM에 등록. 1. 클라이언트 응용 프로그램은 FCM에 접속하여 Sender ID, API Key 및 App ID를 FCM에 전달 후 등록 토큰을 획득. 2. FCM은 클라이언트 애플리케이션에게 등록 토큰을 반환함. 3. 클라이언트 애플리케이션은 Registration Token을 응용 서버에 전달. • 응용 서버는 Registration Token을 캐시 하여 이후 앱과의 통신을 가속. 이 핸드 셰이크 후 메시지를 받거나 메시지를 전송. • 클라이언트 애플리케이션이 메시지를 수신하지 않으려는 경우 응용 서버에 등록 토큰을 삭제 요청. • 클라이언트 애플리케이션이 삭제 되면 FCM이 감지하고 자동으로 응용 서버에 등록 토큰 삭제 요청. Registration with FCM
  • 106. Mobile Architecture Overview 2017 Backend Architecture Push Server • 응용 서버가 클라이언트 애플리케이션에 메시지 단계. 1. 앱 서버는 메시지를 FCM으로 전송합니다. 2. 장치가 사용할 수 없는 상태라면 FCM 서버는 나중에 전송할 수 있도록 대기열에 메시지를 저장. 최대 4 주 동안 보관. 3. 클라이언트 장치를 사용할 수있게 되면 FCM은 해당 장치의 클라이언트 애플리케이션으로 메시지 전달. 4. 클라이언트 애플리케이션은 수신된 메시지를 사용자에게 표시. 5. 앱 서버가 하나의 애플리케이션에 보내는 메시지의 최대 길이는 4kB. Downstream Messaging
  • 107. Mobile Architecture Overview 2017 Backend Architecture Push Server • Topic Messaging는 응용 서버에서 특정 주제에 가입한 애플리케이션으로 메시지를 전송. • Firebase의 콘솔 알림 GUI를 통해 주제 메시지를 작성하고 전송. • FCM은 가입 된 클라이언트에게 주제 메시지의 라우팅 및 전달을 처리. • 날씨 알림, 주식 시세 및 헤드 라인 뉴스와 같은 메시지에 사용. (클라이언트 앱이 앞서 설명한 등록 토큰을 얻은 후에). 1. 클라이언트 애플리케이션이 FCM에 가입 메시지를 전송하여 주제에 가입. 2. 응용 서버는 주제 메시지를 FCM에 보내 분배. 3. FCM은 주제 메시지를 해당 주제에 등록한 클라이언트로 전달. Topic Messaging
  • 108. Mobile Architecture Overview 2017 Backend Architecture Push Server • 서비스 별 에이전트를 통해 비즈니스 로직 구현. • 큐잉 처리 된 푸시 서비스별 서비스. • 푸시 서버에 접속하는 커넥션에 대한 풀링. Push Server
  • 109. Mobile Architecture Overview 2017 Backend Architecture Firebase • Polling Adapter와 Message 기반 Adapter 제공 • 범용 API 제공 • 벤더 별 Dispatcher 제공 IBM Push Notification
  • 110. Mobile Architecture Overview 2017 Backend Architecture Redhat AeroGear AeroGear Push • Send push notifications to any device, regardless of platform or network. • Send push notifications from the Unified Push Server via 7 push networks to any mobile device. • Android, iOS, Windows, Cordova, Web 플랫폼 지원 • SDK 제공 AeroGear Security • Integrate with your existing security and authentication infrastructure. • A small set of classes to provide integration with security providers written in Java, like PicketLink and Apache Shiro. • SDK 제공 AeroGear Sync • Real-time, client-server data synchronization with ease and efficiency. • Full real-time data sync where updates are initiated from both the client and server over a bi-directional channel. • SDK 제공 AeroGear
  • 111. Mobile Architecture Overview Development Skills Native Skills Hybrid Skills Mobile Development Security Besides Skills
  • 112. Mobile Architecture Overview 2017 Development Skills Native Skills • 업계에서 많이 쓰는 스킬을 확인 할 수 있음. • 기본 플랫폼에 대한 깊은 이해도 필요. • 오픈소스 소프트웨어에 대한 이해도 필요. • Front-end 기술 뿐 만 아니라 Back-end 기술의 이해도 필요. • 스마트폰 및 모바일 디바이스에 대한 깊이 있는 이해도 필요. (연산에 따른 Battery 소모, GPS 기술 등등) • Enterprise 환경에서의 개발 경험. Job Posting
  • 113. Mobile Architecture Overview 2017 Development Skills Native Skills • 압도적인 스마트폰 판매량으로 인한 Android 기반의 플랫폼 강세 • 결론적으로 현재는 iOS, Android 플랫폼이 대세임. 스마트폰 판매 기반 Mobile Platform 통계
  • 114. Mobile Architecture Overview 2017 Development Skills Native Skills Android Studio • 안드로이드를 위한 통합 개발 환경. • IntelliJ 기반. 아파치 2.0 라이선스. JAVA • 썬 마이크로시스템즈의 제임스 고슬링(James Gosling) 이 개발한 객체 지향적 프로그래밍 언어. 1995년에 발표. • 웹 애플리케이션 개발에 가장 많이 사용하는 언어.모바일 기기용 소프트웨어 개발에도 널리 사용. • 현재 버전 9까지 출시. 안드로이드는 JDK 7 Gradle • Groovy를 이용한 빌드 시스템. Groovy와 유사한 도메인 언어를 채용. • 안드로이드 스튜디오의 공식 빌드 시스템. Java, C/C++, Python 등과 같은 여러 가지 언어를 지원. Kotlin • 정적 타입 언어로서 JAVA VM 상에서 실행. JetBrains 사에서 개발. Android Development Skills
  • 115. Mobile Architecture Overview 2017 Development Skills Native Skills Android Studio • 안드로이드를 위한 무료 통합 개발 환경. • JetBrains 사의 IntelliJ 기반으로 개발되었음.
  • 116. Mobile Architecture Overview 2017 Development Skills Native Skills Xcode • Mac OS 및 iOS 애플리케이션 개발을 위간 개발 툴 Objective C • C 프로그래밍 언어에 스몰토크 스타일의 메시지 구문을 추가한 객체 지향 언어. • 넥스트의 NeXTSTEP 운영 체제에서 주 언어. (아직까지도 클래스 접미사로 NS 가 남아 있음.) Swift 3.0 • 2014년 6월 2일 애플 세계 개발자 회의(WWDC)에서 처음 소개. • Objective C와 마찬가지로 LLVM으로 빌드 되고 같은 런타임을 공유. • 클로저, 다중 리턴 타입, 네임스페이스, 제네릭스, 타입 유추 등 현대 프로그래밍 언어가 갖고 있는 기능을 많이 포함. iOS SDK • 아이폰은 OS X에 들어가는 XNU 커널을 발전시켜 변형한 커널을 마찬가지로 사용. • 아이폰 응용 소프트웨어 개발을 위한 툴 체인은 마찬가지로 OS X 개발 도구이자 GNU 도구들(GCC, apple-darwin9-gcc-4.0.1, apple- darwin9-gcc-4.2.1 등)을 포함하는 도구인 Xcode에 기반. iOS Development Skills
  • 117. Mobile Architecture Overview 2017 Development Skills Native Skills iOS Development Skills
  • 118. Mobile Architecture Overview 2017 Development Skills Hybrid Skills • Cordova 자바스크립트, HTML5, CSS3를 이용하여 개발. 모든 레이아웃 렌더링이 플랫폼의 네이티브 UI 프레임워크가 아닌 웹 뷰를 통해 수행. 배포를 위해 패키지 화되면서 네이티브 기기 API에 접근할 수 있음. iOS, 안드로이드, 웹OS, 윈도 폰, 심비안 OS, RIM 블랙베리, 타이젠 지원. 블랙베리 OS 5, OS 6와 OS 10, 바다 지원. Custom Native Plugin 개발 가능. • Ionic HTML, CSS, and JavaScript 과 같은 웹기술을 기반으로 개발. 룩앤필과 UI 상호작용 부분을 중용한 목표로 함. AngularJS 와 NodeJS, Cordova 기반으로 구성됨. Cordova와 같은 컨테이너 프레임워크는 교체 가능함. Open Source Hybrid Framework
  • 119. Mobile Architecture Overview 2017 Development Skills Hybrid Skills • Sencha Touch HTML5, CSS3 와 JavaScript로 구성된 UI 프레임워크. Android, iOS, Windows, Tizen, BlackBerry 디바이스 지원 Cordova 기반으로 패키징. • Framework7 iOS & Android native look and feel 전용 프레임워크 HTML 과 CSS, VueJS와 같은 JavaScript를 이용하여 iOS, 안드로이드 Material Design 구현. iOS or Android 웹 앱이나 Cordova 컨테이너를 이용하여 패키징. Open Source Hybrid Framework
  • 120. Mobile Architecture Overview 2017 Development Skills Hybrid Skills Open Source Hybrid Framework https://framework7.io/ https://cordova.apache.org/ https://ionicframework.com/ https://vuejs.org/https://www.sencha.com/products/touch/#overview https://angularjs.org/
  • 121. Mobile Architecture Overview 2017 Development Skills Mobile Development Security OWASP Mobile Top 10 Risks - 2016 • M1 부적절한 플랫폼 사용 이 범주는 플랫폼 기능의 오용 또는 플랫폼 보안 제어 사용 실패를 다룬다. Android Intent, 플랫폼 Permissions, TouchID 오용, 키 체인 또는 모바일 운영 체제의 일부인 다른 보안 컨트롤이 포함될 수 있습니다. 모바일 앱이 이러한 위험을 경험할 수 있는 몇 가지 방법이 있습니다. • M2 안전하지 않은 데이터 저장소 이 새로운 카테고리는 Mobile Top Ten 2014의 M2 + M4의 조합입니다. 이는 안전하지 않은 데이터 저장 및 의도하지 않은 데이터 유출을 다루고 있습니다. • M3 충분하지 않은 통신 이는 악의적 인 핸드 셰이 킹, 잘못된 SSL 버전, 약한 협상, 민감한 자산의 일반 텍스트 통신 등을 다룹니다.
  • 122. Mobile Architecture Overview 2017 Development Skills Mobile Development Security OWASP Mobile Top 10 Risks - 2016 • M4 안전하지 않은 인증 이 범주는 최종 사용자 인증 또는 잘못된 세션 관리에 대한 개념을 탐지 합니다. 여기에는 다음이 포함될 수 있습니다. - 필요한 경우에 사용자를 식별하지 못함 - 필요한 경우에 사용자 신원을 유지하지 못함 - 세션 관리의 약점 • M5 충분하지 않은 암호화 이 코드는 민감한 정보 자산의 암호화 부분에 해당합니다. 그러나 암호는 어떤 면에서는 불충분합니다. M3에서 TLS 또는 SSL과 관련된 모든 것이 있습니다. 또한 앱이 해야 할 때 암호화를 전혀 사용하지 않으면 M2에 속할 것입니다. 이 범주는 암호화가 시도 된 문제에 대한 것이지만 올바르게 수행되지 않았습니다.
  • 123. Mobile Architecture Overview 2017 Development Skills Mobile Development Security OWASP Mobile Top 10 Risks - 2016 • M6 안전하지 않은 인가 승인 실패 (예 : 클라이언트 측의 승인 결정, 강제 검색 등)를 캡처하는 카테고리입니다. 이는 인증 문제 (예 : 기기 등록, 사용자 식별 등)와 다릅니다. 앱이 필요한 상황에서 사용자를 전혀 인증하지 않으면 (예 : 인증되고 승인 된 액세스가 필요한 경우 일부 리소스 또는 서비스에 익명으로 액세스 권한을 부여하는 경우) 인증 오류가 아닌 인증 실패입니다. • M7 클라이언트 코드 품질 이것은 덜 사용 된 범주 중 하나 인 "신뢰할 수없는 입력을 통한 보안 결정"이었습니다. 이것은 모바일 클라이언트의 코드 수준 구현 문제에 대한 포괄적 인 내용 일 것입니다. 이는 서버 측 코딩 실수와 구별됩니다. 이는 버퍼 오버 플로우, 형식 문자열 취약점 및 모바일 장치에서 실행되는 일부 코드를 다시 작성하는 코드 품질 실수와 같은 것들을 캡처합니다.
  • 124. Mobile Architecture Overview 2017 Development Skills Mobile Development Security OWASP Mobile Top 10 Risks - 2016 • M8 코드 변조 이 범주에는 바이너리 패치, 로컬 리소스 수정, 메서드 후킹, 메서드 변경 및 동적 메모리 수정이 포함됩니다. 응용 프로그램이 모바일 장치로 전달되면 코드 및 데이터 리소스가 해당 모바일 장치에 상주합니다. 공격자는 코드를 직접 수정하거나, 메모리 내용을 동적으로 변경하거나, 응용 프로그램이 사용하는 시스템 API를 변경하거나 대체하거나, 응용 프로그램의 데이터와 자원을 수정할 수 있습니다. 이것은 공격자에게 소프트웨어의 의도 된 사용을 개인적 또는 금전적 이득을 위해 전복시키는 직접적인 방법을 제공 할 수 있습니다. • M9 역공학 이 범주에는 소스 코드, 라이브러리, 알고리즘 및 기타 자산을 결정하기위한 최종 코어 바이너리의 분석이 포함됩니다. IDA Pro, Hopper, otool 및 기타 바이너리 검사 도구와 같은 소프트웨어를 사용하면 공격자가 응용 프로그램의 내부 동작을 파악할 수 있습니다. 이것은 백 엔드 서버, 암호화 상수 및 암호 및 지적 재산에 대한 정보를 공개하는 것 외에도 응용 프로그램의 초기 취약점을 악용하는 데 사용될 수 있습니다.
  • 125. Mobile Architecture Overview 2017 Development Skills Mobile Development Security OWASP Mobile Top 10 Risks - 2016 • M10 관련 없는 기능 종종 개발자는 숨겨진 백도어 기능 또는 프로덕션 환경으로 릴리스 되지 않을 예정인 기타 내부 개발 보안 컨트롤을 포함합니다. 예를 들어 개발자가 실수로 하이브리드 앱에 댓글로 비밀번호를 포함 할 수 있습니다. 또 다른 예는 테스트 중 2 요소 인증을 사용하지 못하도록 하는 것입니다. 출처 : https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10
  • 126. Mobile Architecture Overview 2017 Development Skills Besides Skills • Xcode 용 오픈소스 라이브러리 패키지 관리 툴 • 일반적인 오픈소스 패키지 관리툴의 기능 제공 • Podfile을 통해 오픈소스 라이브러리를 정의. • Front-end Tool 제공. • Mac OS 에 기본 제공되는 Ruby 기반으로 구성. CocoaPod https://cocoapods.org
  • 127. Mobile Architecture Overview 2017 Development Skills Besides Skills • Mac OS 용 패키지 관리자. • 애플에서 제공하지 않는 리눅스 오픈소스 패키지를 Mac OS 용으로 포팅. • /usr/local 에 설치 하지 않고 별도 전용 디렉토리에 설치 하여 시스템에 영향이 적음. • Git 과 Ruby 기반으로 구성됨. • Ruby 패키지 관리자 Gem의 의존성 모듈 설치 가능. Homebrew https://brew.sh/index_ko.html
  • 128. Mobile Architecture Overview 2017 Development Skills Besides Skills • Chrome V8 Javascript 엔진으로 빌드 Javascript 런타임. • 이벤트 기반, 넌 블로킹 I/O 모델을 사용하여 가볍고 효율적임. • 패키지 관리자 npm의 생태계는 세계에서 가장 큰 오프소스 라이브러리 생태계. • JavaScript Full Stack 프레임워크. • 웹 뿐만 아니라 모바일, 서버사이드 컴포넌트, Micro Service 등 여러 분야에서 사용. Node https://nodejs.org/ko/
  • 129. Mobile Architecture Overview Advanced Test Framework React Native Developer Program Apple Enterprise Program Mobile Landscape
  • 130. Mobile Architecture Overview 2017 Advanced Test Framework • Open Source 모바일 테스트 프레임워크. • 테스트 오토메이션 지원 • 스크립트 기반의 테스트 • Node 기반으로 이루어진 서버와 클라이언트 드라이버로 구성 • Front-End Tools 제공 . Appium
  • 131. Mobile Architecture Overview 2017 Advanced React Native React Native Architecture • Facebook 에서 개발한 Hybrid 모바일 프레임워크. • React 를 기반으로 개발. • JSX 문법을 이용하여 개발 • Facebook, Instagram, Airbnb, Baidu, QQ 앱이 React Native 로 개발 • 동적 리로딩으로 개발 시간 단축. • Native 코드의 모듈화로 개발 용이. • Not Webkit base. • https://facebook.github.io/react-native/
  • 132. Mobile Architecture Overview 2017 Advanced Test Framework • 오프라인-우선 기능을 제공하는 리액티브 모바일 앱을 쉽게 개발할 수 있게 해주는 유연한 객체 데이터베이스 프레임워크 • 10줄 이하의 코드로 실시간 협업 기능 구현. • 모바일 앱을 더 빠르게 개발. • SQLite와 Core Data를 대체 • 오픈소스로 공개. realm
  • 133. Mobile Architecture Overview 2017 Advanced React Native React Native Architecture
  • 134. Mobile Architecture Overview 2017 Advanced React Native • React Native Worker Thread : Image decoding이나 디스크 I/O, 레이아웃 처리와 같은 CPU 집중적인 작업. • React Native Thread : JavaScript 인터프린트 한 후 비동기 브릿지를 통하여 UI Thread와 통신하는 역할. • App UI Thread : 실제 네이티브 애플리케이션의 UI Thread. React Native
  • 135. Mobile Architecture Overview 2017 Advanced Developer Program • 개인으로 등록하기 : 129,000 앱스토어 배포 1년마다 갱신 • 기업으로 등록하기 : 129,000 앱스토어 배포 1년마다 갱신 • Enterprise Program : 379,000 인하우스 배포 1년마다 갱신 Apple Developer Program
  • 136. Mobile Architecture Overview 2017 Advanced Apple Developer Enterprise Program • https://developer.apple.com/programs/enterprise/kr/ • 사내 앱 배포 (인 하우스 앱스토어 운영) • 해당 기업에 법적 책임을 지는 DUNS 번호 확인. • 앱스토어를 통한 사외 배포는 불가. • 사내 개발 팀 구성 Apple Developer Enterprise Program
  • 137. Mobile Architecture Overview 2017 Advanced Developer Program • https://play.google.com/apps/publish/ • 가입 비용 25$ • 앱스토어, 인하우스 배포 • 갱신 없음 Android Developer Program
  • 138. Mobile Architecture Overview 2017 Development Mobile Landscape • 모바일 응용 프로그램 개발은 스마트 폰 응용 프로그램 및 웨어러블 기술을 생각하는 모바일 장치 및 기술을 위한 소프트웨어를 만드는 과정. • 모바일 개발자가 되는 것은 성공적인 경력을 쌓을 수 있는 기회임. • 모바일 앱 경제는 2020 년까지 총 매출액이 1,025 억 달러에 달할 것으로 예상됨. • 2015 년 매출 418 억에 비해 20% 성장. • 모바일 개발 전문 기술 전문가의 필요성 증가를 나타냄. • 세계 모바일 앱 스토어 수익의 45%가 신흥 시장에서 나올 것. • 2016 년 현재 인도와 브라질과 같은 시장은 과도한 성장세를 보이고 있으며, 미국과 같은 성숙한 시장은 포화 상태. • 성숙한 시장에서 다운로드 속도 저하. • 모바일 앱에 종사하는 데 더 많은 시간을 소비하고 전자 상거래를 통해 더 많은 돈을 지출하고 있음. • 2020 년까지 232 억 달러의 매출 증가를 예측합니다. The Mobile App Economy
  • 139. Mobile Architecture Overview 2017 Development Mobile Landscape • 모바일 앱 개발. 테스트 뿐 만 아니라 구현 및 유지보수를 관리하는 책임을 가짐. • 미국 내에서는 평균 72,183 달러의 수입을 얻음. • 모바일 개발업체의 평균 급여 범위는 41,195 ~ 108,890 달러 임. • 범위를 좁혀서 iOS 개발자가 된다면 평균 급여는 80,343 달러임 • Android 앱 개발자는 평균 급여가 77,442 달러임 • 중간 정도의 경력을 쌓게 되면 평균 급여 97,100 달러. The Mobile Developer Salary
  • 140. Mobile Architecture Overview 2017 Advanced Mobile Landscape The future of mobile https://www.entrepreneur.com/article/236832
  • 141. Mobile Architecture Overview 2017 Advanced Mobile Landscape Foundations of Mobile
  • 142. Mobile Architecture Overview 2017 Advanced Mobile Landscape Mobile Native Advertising Landscape