Channy Yun @channyun
Daum Developers Network & Affiliates
http://dna.daum.net
공공 데이터와 활용 방법론 – 오픈 API 기술 및 동향
강의 내용
2
• 개괄 – 본 강의에서는 공공 데이터를 포함하여 개방형 데이터 API 플랫폼에 대한 개괄과 표준 기술 현황, 매쉬업 사례 등을 알아본다.
• 주요 목차 – 웹2.0과 공공 데이터 공유 개념이 성장 – Gov 2.0와 해외 공공 데이터 공유 및 활용 사례 – 공공 데이터를 제공하는 기술적 관점
• 원본 데이터(Raw Data), 데이터 API및 링크드 데이터 관리 방법 • 오픈 API 설계 및 활용 방법 • 오픈 API 산업의 현재 기술 동향
– 국내 공공 데이터 개방의 현실과 보완 방안
3
웹2.0 - Web as a Platform
• Definition • I'm talking about the emergence of what I've started to call Web
2.0, the internet as platform.... it's about the way that web sites like eBay, Amazon, and Google are becoming platforms with rich add-on developer communities; it's about the way that network effects and data, rather than software APIs, are the new tools of customer lock-in; http://www.oreillynet.com/pub/wlg/5630 Tim O'Reilly Sep. 21, 2004
• Web 2.0 design patterns"- architecting systems so that they get smarter the more people use them, monetizing the long tail via a combination of customer-self service and algorithmic management, lightweight business models made possible by cooperating internet services and data syndication, data as the "intel inside", and so on.
• 플랫폼으로서 웹 – 웹이 소프트웨어 플랫폼처럼 스스로 자생하고 생존하는 시스템으로 진화 하고 있다.
– 데이터를 기반으로 Open API를 통해 개발자 커뮤니티를 생성하며 가벼운 비즈니스 모델로 모든 이용자들이 혜택을 받고 있다.
웹 2.0의 주요 뿌리
4
• 오픈 소스 – 참여를 통한 소프트웨어 개발 방식 – 품질 높은 소프트웨어와 저렴하고 빠른 서비스 개발 가능 – 성공 사례: Linux, Apache, Firefox, Wordpress
• 오픈 스탠다드
– 서비스와 데이터를 다룰 수 있는 각종 데이터 포맷 – 개발 플랫폼과 독립적인 정보 및 애플리케이션 구성 – 빠른 기술 습득 및 저렴한 학습 비용
• 오픈 API
– 특정 개발 환경에 종속적이지 않는 인터페이스 제공 – 손쉬운 접근 및 매쉬업을 통한 창의적 앱 개발 가능성
5
웹2.0과 Open API의 출현
<웹 2.0에서 소셜웹까지>
JVM Platform Web
Java API Interface HTTP, JSON, OAUTH
Java Application Software Data
Developer Participators User
API Lock-in Key Factor Data Lock-in
폐쇄 플랫폼 vs. 개방 플랫폼
폐쇄된 API를 가진 버추얼 머신
Platform 개방된 API를 가진
웹 서비스
독자적/폐쇄형 API 개방형/표준형
학습 비용 등 진입이 어려움
Costs 빠르고 쉽게 개발 및
서비스 가능
기능 위주 Lock-in 데이터 위주
각 플랫폼 기반 개발자
Developers 웹 서비스 기반
개발자
.Net Java
Examples Google Amazon
OS Web Social Mobile Internet
Dot-Com Bubble
Web 2.0 Social Graph
Cloud
Open Web Google, Amazon, Ebay
Social facebook, Twitter
Cloud AWS, Hadoop
Social Graph
Mobile iOS, Android
Closed Unix, Windows, Java
Software
Open Source GNU, Linux, Apache
Rich Internet Flash, Silverlight
시대별 플랫폼의 변화
죽은 플랫폼의 교훈
• Cost of ownership • Conflicting revenue model • Lack of network effects • High adoption barriers
9
Gov 2.0 – 정부를 위한 웹 2.0
• Definition • Gov 2.0 or Government 2.0 refers to government policies that
aim to harness collaborative technologies to create an open-source computing platform in which government, citizens, and innovative companies can improve transparency and efficiency. Put simply, Gov 2.0 is about "putting government in the hands of citizens".
• Gov 2.0 combines Web 2.0 fundamentals with e-government and increases citizen participation by using open-source platforms, which allow citizens and innovative companies to develop apps, websites, widgets. The government’s role is to provide open data, web services, and platforms as an infrastructure.
• 플랫폼으로서 정부 – 정부가 시민의 참여를 보장하는 효율적이고 투명한 플랫폼의 역할을 함으로서 혁신 지속
– 오픈 소스, 오픈 데이터를 기반으로 지속 가능한 대민 서비스를 제공
공공정보 (Public Sector Information)
공공콘텐츠 (Public Contents)
기상데이터 등 공공부문의 기능과 밀접하게 연관된 자료 지속적으로 생산되면, 애플리케이션으로의 변환과 이용이 용이 재활용에 의한 가치창출
공공 부문이 보유하고 있는 예술작품 등 정부의 기능과 직접적으로 연관이 없는 문화, 지식 콘텐츠 Open Access, Remix
공공 데이터 정의
소수의 사업자에 대한 이용허락
정부에 의한 직접 서비스
공중 이용허락 (Public License)
혁신 가능성 유연성 신속성 효율성 가격
예산절감
17
데이터 제공 포맷 비교
원본 데이터 오픈 API 링크드데이터
주요 기술 TXT, XLS, PDF XML, JSON RDF, SPARQL
데이터 형식 정적 동적 정적 및 동적
데이터 투명성 높음 중간 높음
서비스 안정성 낮음 높음 중간
개발 용이성 낮음 높음 중간
사업적 활용성 낮음 높음 중간
http://api.twitter.com/1/statuses/show/99.json
오픈 API란?
"created_at": "Wed Mar 22 03:38:41 +0000 2006", "id": 99, "id_str": "99", "text": "learning about the earthquake I felt earlier today", "source": "web", "user": { "id": 13, "name": "Biz Stone", "screen_name": "biz", "location": "San Francisco, CA", "description": "Co-founder of Twitter, Inc.", "url": "http://t.co/bdlNWgB" } }
왜 오픈 API를?
• 프로그래밍은 결국 API 디자인 – 좋은 코드는 Module화 되어 있고, 각 모듈은 API로 구성되어 있다.
• 좋은 API는 높은 재사용성 제공 – API 사용자가 생기면 변경하기가 어려우며, 처음 부터 설계에 노력을 들이게 된다.
• 외부 개발자와의 협업이 가능 – 일반 기업에서 개발자는 외롭다. 하지만 API를 오픈하면 밖에도 내 편을 만들 수 있다.
오픈 API 활용법
21
• 가치 있는 서비스 제공 – 개발자 및 서드파티에 유용한 플랫폼 혹은 데이터 – 명확한 대상과 필수 기능 제공
• 비즈니스 모델 필요
– 무료로 제공하더라도 도움이 되는 비즈 모델 필요 – 제휴 업체나 개발자가 수익화할 수 있도록 지원
• 쉽게 사용할 수 있는 기술
– 초보 개발자들이 바로 따라 할 수 있는 방법 – 다양한 라이브러리 및 기술지원
• 외부 개발자 지원
– 지속 가능하다는 신뢰와 소통 채널 구축
23
http://tvpot.daum.net/v/ve789DBrdDsVVuurDoVeudr
<인트로의 음성인식 API 사용 예>
UNEXPCTED USECASE
24
2. 제공자와 상생 모델
(1) Free (4) Indirect Content Acquisition Content Syndication API as SaaS service Intenal API use case
(2) Developer Pays Pay as You Go Tiered Pricing Freemium Unit-based Pricing Transaction Fee
(3) Developer Gets Paid Affiliate Revenue Share CPA CPC
<다양한 API 비즈니스 모델>
API 설계 및 서비스 시 유의 사항
• 1. 객체 표현 POST /photos/create POST /photos/show/foobar POST /photos/update/foobar POST /photos/delete/foobar
• 2. 호환성 http://apis.daum.net/maps/v1/js http://apis.daum.net/maps/v2/js
• 3. 에러처리 <apierror> <code>404</code> <message>App 인증 실패</message> <dcode>22</dcode> <dmessage>등록되지 않은 apikey 입니다.</dmessage> </apierror>
29
• 4. 거의 단일 포맷 (JSON) { 'person' : { 'name': '...', 'age' : 22, 'dogs' : [...] } }
자바스크립트 개발자를 위한 Callback 함수 지원 필수
• 5. 보안 강화? – APIKey와 트래픽 제어가 필수는 아니다!
– 사용자 데이터는 oAuth 이용 – 암호화 제공은 선택 사항
• 6. 문서화 – 레퍼런스, 변경기록, 코드샘플 및 코드 놀이터
• 7. 기술 지원 – 오픈소스 개발방법 : 이슈트래커, 포럼, gitHub
• 8. 개발자 만나기 – Hackerton, DevDay, CodeJam, DevConference
31
2014년 API 산업 기술 동향
40
• 1. API 성장세 지속 – 프로그래머블웹닷컴 오픈 API 갯수 1만개 돌파 및 인터널 및 B2B API 증가세 지속
– 공개:비공개 비율이 1:9임을 감안하면 총 10~20만개의 API 존재 추정
• 2. API 산업 주류 편입
– 일반 IT 기업 뿐만 아니라 스포츠웨어, 소매상, 제조업, 건설사에서도 채택 지속
– 사례집: http://www.3scale.net/api-economy/ebooks/winning-in-the-api-economy/
• 3. API 저작권 이슈
– * API 스펙 및 데이터 재사용 권한에 대한 이슈 점화 중 (오라클 vs 구글 자바 케이스)
– * API 스펙 재사용 및 공용 저작권 노력 지속 예) http://www.apicommons.org/
42
• 4. 서비스 기술 방식 정교화 – 기존의 REST API에서 좀 더 효율적인 머신 리더블 파싱 방식 적용 – 예) Swagger, Blueprint, RAML 및 API 검색 엔진
• 5. API 조합 서비스 제공자 증가
– API를 합쳐서 하나의 싱글 포인트로 제공하는 조합 서비스 증가 – 예) http://segment.io https://www.zypr.net/
• 6. API 개발자 도구 성장
– Mashery, Apigee 같은 API 개발자 도구 제공사 이외 신규 업체 진입 – 예) https://www.runscope.com/ http://www.apiscience.com/
Swagger - 효율적 API 설계 및 개발
43
• 개념 – A specification and complete framework implementation for
describing, producing, consuming, and visualizing RESTful web services.
• 주요 특징
http://developers.helloreverb.com/swagger/
45
• 7. API 기반 싱글 페이지 기반의 웹앱 확산 – http://angularjs.org 및 http://famo.us 등 HTML5 기반의 싱글 페이지 웹앱이 주도할 것
– 참고글: http://www.3scale.net/2012/12/the-death-of-the-web-page/
• 8. 하이퍼미디어 API 채택 가속화
– 정적 URI에 쿼리를 던지는 기존 방식과 달리, 결과에 데이터 링크를 제공함으로서 API 탐색 가능
– 아이디어 스펙: • http://stateless.co/hal_specification.html • http://docs.aws.amazon.com/appstream/latest/developerguide/rest-
api.html • http://publicmediaplatform.org/
• 9. 공공 시민 데이터 활성화 – 정부 및 지자체 중심의 시민 공유 데이터 활성화 지속 예상 – 예) http://open311.org/ 및 http://citysdk.eu/
http://cityprotocol.org/
국내 공공 데이터 개방 현황
46
• 정부 3.0 전략 – 공공데이터법 시행 <공공데이터의 제공 및 이용활성화에 관합 법률
(7.30 공포, 시행 10.31)> – 2017년까지 5개년에 걸쳐 6,075종 추가 개방으로 3,395종(16.1%) ->
9,470종(44.9%) – 개방효과 극대화를 위한 선택과 집중 전략 - 파급효과 등 토대로 전략분야 선정
Gov 3.0? made in Korea
47
• 공공정보를 적극 개방▪공유, 부처간 칸막이를 없애 소통▪협력함으로써
• 국정과제에 대한 추진동력을 확보하고 국민 맞춤형 서비스를 제공함과 동시에
• 일자리 창출과 창조경제를 지원하는 새로운 정부운영 패러다임
선언적 공개가 아닌 구체적 실현
이용에 대한 실질적 가이드라인의 구축
공개 담당자 평가 및 성과측정의 방식 전환
자유로운 mash-up의 적극적 유도
공공부문의 지적 재산권에 대한 원칙적 불행사
상용화에서 자유이용으로
정보보호, 보안 이슈 등에 관한 의식 전환
신뢰성, 최신성, 지속성의 확보를 위한 적극적 지원
표준화, 오픈 API, 데이터의 질에 집중
공공 데이터 활용 시각 변화
출처: 윤종수, Government 2.0 현황 및 전망 48
무엇이 더 필요한가?
49
• 데이터의 표준화 및 개발 용이성 확대 • 데이터의 지속성 및 신뢰성 있는 서비스 • 부처별 게이트웨이 역할에서 민간 사업자와의 협업
– 데이터 이전을 통한 트래픽 분산 – 다양한 매쉬업 사례 발굴
52
시민 참여 프로젝트
http://www.scribd.com/doc/63548697/%EC%B0%B8%EC%97%AC%EC%99%80-%EC%86%8C%ED%86%B5%EC%9D%98-%EC%A0%95%EB%B6%802-0-%ED%98%B8%EC%A3%BC-%EC%A0%95%EB%B6%802-0-%ED%83%9C%EC%8A%A4%ED%81%AC%ED%8F%AC%EC%8A%A4-%EB%B3%B4%EA%B3%A0%EC%84%9C