it 서비스 개발 15년 _ it service 15 years
TRANSCRIPT
1900년대 서비스 구성
• Apache httpd / CGI
• C library
• Berkeley DB
• shell(c shell, bash shell) / Perl
• 기타 모듈들...
Issue?
• Httpd - Tomcat - Struts - Java / Velocity
• Mysql, DB Middle Ware
• Counter Server, Cache Server
• Eclipse, CVS
• Error Control : Uniq code Why?
Apache Apache Apache Apache
Java
Java
JDK 1.0 (January 21, 1996)
JDK 1.1 (February 19, 1997)
J2SE 1.2 (December 8, 1998)
J2SE 1.3 (May 8, 2000)
J2SE 1.4 (February 6, 2002)
J2SE 5.0 (September 30, 2004)
Java SE 6 (December 11, 2006)
Java SE 7 (July 28, 2011)
Java SE 8 (March 18, 2014)
Java SE 9 (July, 2016 (planned))
Eclipse
- 3.0 (21 June 2004)
- 3.1 (28 June 2005)
Callisto 3.2 (30 June 2006)
Europa 3.3 (29 June 2007)
Ganymede 3.4 (25 June 2008)
Galileo 3.5 (24 June 2009)
Helios 3.6 (23 June 2010)
Indigo 3.7 (22 June 2011)
Juno 3.8/4.2 (27 June 2012)
Kepler 4.3 (26 June 2013)
Luna 4.4 (25 June 2014)
Mars 4.5 (24 June 2015)
Neon 4.6 (June 2016 (planned))
낭만적인 엔지니어 ㅎ
Android
Apple pie 1.0 -> alpha (Sep 23, 2008)
Banana bread 1.1 -> beta (Feb 9, 2009)
Cupcake 1.5 (Apr 27, 2009)
Donut 1.6 (Sep 15, 2009)
Eclair 2.0~2.1 (Oct 26, 2009)
Froyo 2.2~2.2.1 (May 20, 2010)
Gingerbread 2.3~2.3.7 (Dec 6, 2010)
Honeycomb 3.0/3.1/3.2 (Feb 22, 2011)
Ice Cream Sandwich 4.0~4.0.4 (Oct 18, 2011)
Jellybeans 4.1/4.1.1/4.1.2/4.2/4.2.1/4.2.2/4.3/4.3.1 (Jul 9, 2012)
Kitkat 4.4~4.4.4 (Oct 31, 2013)
Lollipop 5.0~5.1.1 (Nov 12, 2014)
Marshmallow 6.0~
OS X
Kodiak Public Beta (2000)
Cheetah Mac OS X 10.0 (2001)
Puma 10.1
Jaguar 10.2 (2002)
Panther 10.3 (2003)
Tiger 10.4 (2005)
Leopard 10.5 (2007)
Snow Leopard 10.6 (2009)
Lion 10.7 (2011)
Mountain Lion OS X 10.8 (2012)
Mavericks 10.9 (2013)
Yosemite 10.10 (2014)
El Capitan 10.11 (2015)
2005, M Step 3• 확장성 : 개별홈 -> 일부 분리
• Berkeley DB -> Mysql
• cgi -> java
• Web - WAS Clustering / LB
• MVC
• 배포 : 무중단 & 순간롤백 & 유저별 순차배포
How?
배포• Version Control
• Build
• Deploy (opt:Reservation)
• Rollback
• Mornitoring/ Notification
• Release Note
• CI
• CD
• DevOps
2007, Roll (flex)
운명은?
• https://www.youtube.com/watch?v=Iuw-LYK1IcI
• RIA : Rich Internet Application
• 웹이나 앱같은 사용성을 위한
• Flex, SilverLight, JavaFX
개발 프로젝트 How to
For TEAM For Leader
먼저 보이고, 다음에 고쳐라 핵심을 봐라
매일 디플로이 하라 모든 것을 기록해라
완벽히 테스트하고, 평화를 얻어라 생각 먼저하고, 그 다음 행동해라
내가 유저고, 내가 책임자다 한 박자 숨을 돌려라
http://www.slideshare.net/docdo/2005-daum-devconfprojecthowtodocdo
방법론• Agile
• XP : Pair Programming, TDD
• Scrum, Sprint
• LeanStartup : MVP, pivoting
• Kanban
• MoSCoW / DSDM
• Prototyping
Easter Egg 낭만적인 엔지니어
http://pie.daum.net/p/flash/puzzle/mosaic.swf?puzzleId=13397
요리하는 엔지니어
http://pie.daum.net/p/flash/puzzle/mosaic.swf?puzzleId=649398
2006, QI / 모니터링
• 품질 관리
• 기준 : 응답속도 & 에러 페이지 뷰
• 모니터링
• 다수의 서버, 간편한 설치, 유연한 명령어
How?
How?
그림/그래프가 아닌 지표/수치 리포팅은 안한 것과 같다
2011, FrontErrorManager Fall in Love with Exceptions
텍스트
Logging Reporting Debugging
http://devon.daum.net/2012/session/f3#.VhuUpBPtmko
FEM:Project 구성
Service
ToolTico.js
DB
Apache access log
NOSQL data
Mail Report
Messenger ReportPC / Mobile
Debugging Tool
Manual logging
Try-Catch logging
Event handler logging
window.onerror logging
엔지니어의 가치 2
문제를 발명하고 해결한다
발명 : 전에 없던 물건이나 방법 따위를 새로 생각하여 만들어 냄 정의 : 어떤 단어나 사물의 뜻을 명백히 밝혀 규정함 발견 : 미처 보지 못했던 사물이나 알려지지 않은 사실을 찾아냄
Web2.0 / Mobile
GmailAJAX
2004
2005
2007
2009
2010
2011
2012
GoogleMaps
[국내최초]
DaumMail AJAX——-
M Step 4
iPhone미국출시
AJAX용어등장
GmailMobile
WebApp
iPhone한국출시
HTML5발표
[국내최초]
DaumMail Mobile
WebApp
KakaoTalkMypeople
Web2.0용어등장
2008
Android마켓오픈
브라우저 위에서
Tool서비스 형태
구동위치
WebApp , HybridApp
Web App
Page Tool
브라우저 위에서 독립적 설치디바이스 기능 사용
WebApp HybridApp
Page
Tool
독립적 설치디바이스 기능 사용
Responsive Web 해상도
2013, SolMail & SolCalendar• Global : 세계가 내 손 안에, 중국의 재빠름...
• i18n
• AWS, CDN
• 에러 : 쌓았다가 리포팅, 스토어 모니터링
• Polyglot
• Full Stack Engineer
• Microservice Architecture
• Cloud
• Big Data / 분석 / 분산처리
• API / OpenSource
• Storage / DB / 캐싱 / 큐
• 보안
• 성능 튜닝 / 트래픽 컨트롤 / LoadBalancing
• 검색
• 아키텍쳐
• On Demand
• O2O, IoT
Tech 핫이슈 스테디셀러 IT 핫이슈
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Assembly, Ruby, Delphi, VB, Pascal, Swift, MATLAB, PL/SQL, R, COBOL, SAS, Fortran, Ada, Scratch, D, ABAP, Scala, Dart, Lisp, OpenEdge, Lua, F#, Prolog, Groovy, Logo, Transact-SQL, Erlang, Haskell, RPG, LabVIEW, Forth, FoxPro, Scheme, Go, ActionScript, Awk, ML, VHDL, Ladder Logic, Rust
• java : spring(spring boot 등) https://github.com/akullpp/awesome-java
• python : django, flask https://github.com/vinta/awesome-python
• php : nette, code igniter, zend
• ruby : rails, sinatra
• js : angular.js, backborn.js, react.js, ember.js, node.js, express.js
• scalar : play, spray.io, lift
• grooby : grails(jvm에서 구동)
Frontend Framework 검토이슈 backborn, angular, ember, react, knockout
• MV* architecture: MV* architecture를 제공하는가?
• routing: URL에 따른 Action 수행이 가능한가?
• two-way bindings: 모델 <-> 뷰 양방향 데이터 바인딩 sync 기능을 제공하는가?
• templating: 성능이 좋은 템플릿을 사용하는가?
• history: 북마크, 뒤로/앞으로가기 가능한가?
• learning curve: 배우기 쉬운가?
• local storage: 로컬스토리지 API를 지원하는가?
• documenting: 문서화가 잘 되어 있는가?
• size: 프레임워크 파일 사이즈
• unit test: 테스트에 문제 없나?
• lib dependency: 의존성 라이브러리가 얼마나 되나?
• framework dependency: 반드시 규약에 따라 코드가 작성되어 하는등 프레임워크에 대한 의존도가 높은가?
• cross browsing: 다양한 브라우저를 지원하는가?
• 비젼: 인기도는? 앞으로 롱런할수 있나? 하위호환지원가능할까?
• co-working: 디자이너, 마크업, 개발자가 각각 작업하는데 문제가 없나?
• model collection api: Model을 정렬, 필터링할 수 있는 강력한 API를 제공하는가