For 연세대학교
IT 서비스개발, 15년
2015. 10. 6
다음커뮤니케이션, 카카오
김연지
docdo@hanmail.net
https://www.youtube.com/watch?v=uHCqm4HWWRU
응답하라 2000
응답하라 2000
1900년대 서비스 구성
• Apache httpd / CGI
• C library
• Berkeley DB
• shell(c shell, bash shell) / Perl
• 기타 모듈들...
Issue?
2001, Java 의 사용
• J2SE 1.3
• Apache / Resin / Servlet
• Oracle
• IDE : VI + javac
Issue?
2002,
M Step 2
2002, 최초의 html 편집기
편지지의 Standard
(Animated GIF, flash)
• 편지지 Frame
포토메일 (full flash)
• Flash 5, Action Script
엔지니어의 가치 1
기술로부터 나오는 아이디어
2004, SNS개발 2달의 기록
2004, SNS개발 2달의 기록
• 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)
낭
만
적
인
엔
지
니
어
2004, RSS웹리더 = 2*2
2004, RSS웹리더 = 2*2
• XML (지금의 대세는 JSON)
• 2명 2달
Why?
장애 페이지.JPG
What?
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
Continuous Integration
• 자동빌드
• 테스트 / 커버리지
• 품질 감시
• 배포 / 분산 빌드
• 리포팅
• DevOps
2005, 파이
Flash 에디터 : 이미지 편집의 가이드가 됨
2007, Roll (flex)
운명은?
• https://www.youtube.com/watch?v=Iuw-LYK1IcI
• RIA : Rich Internet Application
• 웹이나 앱같은 사용성을 위한
• Flex, SilverLight, JavaFX
2005
개발 프로젝트(파이) How to
개발 프로젝트 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?
그림/그래프가 아닌 지표/수치 리포팅은 안한 것과 같다
에러관리(file server, 2010)
단 하나의 에러도 놓치지 않는다
Exception 을 ignore 하지 않는다
"Gardening"
(에러 트래킹, 카운팅, 리포팅)
2011, FrontErrorManager
Fall in Love with Exceptions
텍스트
Logging Reporting Debugging
http://devon.daum.net/2012/session/f3#.VhuUpBPtmko
FEM:Project 구성
Service
Tool
Tico.js
DB
Apache access log
NOSQL data
Mail Report
Messenger Report
PC / Mobile
Debugging Tool
Manual logging
Try-Catch logging
Event handler logging
window.onerror logging
FEM:성과
100
75
50
25
150
200
250
1차배포
2차배포
3차배포
4차배포
5%
엔지니어의 가치 2
문제를 발명하고 해결한다
발명 : 전에 없던 물건이나 방법 따위를 새로 생각하여 만들어 냄
정의 : 어떤 단어나 사물의 뜻을 명백히 밝혀 규정함
발견 : 미처 보지 못했던 사물이나 알려지지 않은 사실을 찾아냄
Web2.0 / Mobile
Gmail
AJAX
2004
2005
2007
2009
2010
2011
2012
Google
Maps
[국내최초]
DaumMail
AJAX
——-
M Step 4
iPhone
미국출시
AJAX
용어등장
Gmail
Mobile
WebApp
iPhone
한국출시
HTML5
발표
[국내최초]
DaumMail
Mobile
WebApp
KakaoTalk
Mypeople
Web2.0
용어등장
2008
Android
마켓오픈
브라우저 위에서
Tool서비스 형태
구동위치
WebApp , HybridApp
Web App
Page Tool
브라우저 위에서 독립적 설치
디바이스 기능 사용
WebApp HybridApp
Page
Tool
독립적 설치
디바이스 기능 사용
Responsive Web 해상도
2013, SolMail & SolCalendar
• Global : 세계가 내 손 안에, 중국의 재빠름...
• i18n
• AWS, CDN
• 에러 : 쌓았다가 리포팅, 스토어 모니터링
2015, M Step 5
• Microservice Architecture
엔지니어의 가치 3
계속 배운다=지치지 않는다
지치지 않으려면?
• 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를 제공하는가
엔지니어의 가치 4
목적을 생각한다
책
Clean Code
Robert C. Martin
Lean Startup
Eric Ries
생각에 관한 생각
Daniel Kahneman
숙제
• 요즘 사용하는 서비스 하나를 골라서, 아키텍쳐를 설계한다
• UML 시도 좋음
끝

IT 서비스 개발 15년 _ IT service 15 years

  • 1.
    For 연세대학교 IT 서비스개발,15년 2015. 10. 6 다음커뮤니케이션, 카카오 김연지 docdo@hanmail.net
  • 2.
  • 3.
  • 4.
  • 5.
    1900년대 서비스 구성 •Apache httpd / CGI • C library • Berkeley DB • shell(c shell, bash shell) / Perl • 기타 모듈들... Issue?
  • 6.
    2001, Java 의사용 • J2SE 1.3 • Apache / Resin / Servlet • Oracle • IDE : VI + javac Issue?
  • 7.
  • 8.
  • 9.
    편지지의 Standard (Animated GIF,flash) • 편지지 Frame
  • 11.
    포토메일 (full flash) •Flash 5, Action Script
  • 14.
  • 15.
  • 16.
  • 17.
    • Httpd -Tomcat - Struts - Java / Velocity • Mysql, DB Middle Ware • Counter Server, Cache Server • Eclipse, CVS • Error Control : Uniq code Why? Apache Apache Apache Apache
  • 18.
    Java Java JDK 1.0 (January21, 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))
  • 19.
    낭만적인 엔지니어 ㅎ Android Applepie 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)
  • 20.
  • 22.
  • 23.
    2004, RSS웹리더 =2*2 • XML (지금의 대세는 JSON) • 2명 2달 Why? 장애 페이지.JPG What?
  • 24.
    2005, M Step3 • 확장성 : 개별홈 -> 일부 분리 • Berkeley DB -> Mysql • cgi -> java • Web - WAS Clustering / LB • MVC • 배포 : 무중단 & 순간롤백 & 유저별 순차배포 How?
  • 25.
    배포 • Version Control •Build • Deploy (opt:Reservation) • Rollback • Mornitoring/ Notification • Release Note • CI • CD • DevOps
  • 26.
    Continuous Integration • 자동빌드 •테스트 / 커버리지 • 품질 감시 • 배포 / 분산 빌드 • 리포팅 • DevOps
  • 27.
    2005, 파이 Flash 에디터: 이미지 편집의 가이드가 됨
  • 28.
    2007, Roll (flex) 운명은? •https://www.youtube.com/watch?v=Iuw-LYK1IcI • RIA : Rich Internet Application • 웹이나 앱같은 사용성을 위한 • Flex, SilverLight, JavaFX
  • 29.
  • 30.
    개발 프로젝트 Howto For TEAM For Leader 먼저 보이고, 다음에 고쳐라 핵심을 봐라 매일 디플로이 하라 모든 것을 기록해라 완벽히 테스트하고, 평화를 얻어라 생각 먼저하고, 그 다음 행동해라 내가 유저고, 내가 책임자다 한 박자 숨을 돌려라 http://www.slideshare.net/docdo/2005-daum-devconfprojecthowtodocdo
  • 31.
    방법론 • Agile • XP: Pair Programming, TDD • Scrum, Sprint • LeanStartup : MVP, pivoting • Kanban • MoSCoW / DSDM • Prototyping
  • 32.
  • 33.
  • 34.
    2006, QI /모니터링 • 품질 관리 • 기준 : 응답속도 & 에러 페이지 뷰 • 모니터링 • 다수의 서버, 간편한 설치, 유연한 명령어 How? How? 그림/그래프가 아닌 지표/수치 리포팅은 안한 것과 같다
  • 35.
    에러관리(file server, 2010) 단하나의 에러도 놓치지 않는다 Exception 을 ignore 하지 않는다 "Gardening" (에러 트래킹, 카운팅, 리포팅)
  • 36.
    2011, FrontErrorManager Fall inLove with Exceptions 텍스트 Logging Reporting Debugging http://devon.daum.net/2012/session/f3#.VhuUpBPtmko
  • 37.
    FEM:Project 구성 Service Tool Tico.js DB Apache accesslog NOSQL data Mail Report Messenger Report PC / Mobile Debugging Tool Manual logging Try-Catch logging Event handler logging window.onerror logging
  • 38.
  • 39.
    엔지니어의 가치 2 문제를발명하고 해결한다 발명 : 전에 없던 물건이나 방법 따위를 새로 생각하여 만들어 냄 정의 : 어떤 단어나 사물의 뜻을 명백히 밝혀 규정함 발견 : 미처 보지 못했던 사물이나 알려지지 않은 사실을 찾아냄
  • 40.
    Web2.0 / Mobile Gmail AJAX 2004 2005 2007 2009 2010 2011 2012 Google Maps [국내최초] DaumMail AJAX ——- MStep 4 iPhone 미국출시 AJAX 용어등장 Gmail Mobile WebApp iPhone 한국출시 HTML5 발표 [국내최초] DaumMail Mobile WebApp KakaoTalk Mypeople Web2.0 용어등장 2008 Android 마켓오픈
  • 41.
    브라우저 위에서 Tool서비스 형태 구동위치 WebApp, HybridApp Web App Page Tool 브라우저 위에서 독립적 설치 디바이스 기능 사용 WebApp HybridApp Page Tool 독립적 설치 디바이스 기능 사용 Responsive Web 해상도
  • 42.
    2013, SolMail &SolCalendar • Global : 세계가 내 손 안에, 중국의 재빠름... • i18n • AWS, CDN • 에러 : 쌓았다가 리포팅, 스토어 모니터링
  • 43.
    2015, M Step5 • Microservice Architecture
  • 44.
    엔지니어의 가치 3 계속배운다=지치지 않는다 지치지 않으려면?
  • 45.
    • Polyglot • FullStack Engineer • Microservice Architecture • Cloud • Big Data / 분석 / 분산처리 • API / OpenSource • Storage / DB / 캐싱 / 큐 • 보안 • 성능 튜닝 / 트래픽 컨트롤 / LoadBalancing • 검색 • 아키텍쳐 • On Demand • O2O, IoT Tech 핫이슈 스테디셀러 IT 핫이슈
  • 47.
    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
  • 48.
    • 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에서 구동)
  • 49.
    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를 제공하는가
  • 50.
  • 51.
    책 Clean Code Robert C.Martin Lean Startup Eric Ries 생각에 관한 생각 Daniel Kahneman
  • 52.
    숙제 • 요즘 사용하는서비스 하나를 골라서, 아키텍쳐를 설계한다 • UML 시도 좋음
  • 53.