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

53
For 연세대학교 IT 서비스개발, 15년 2015. 10. 6 다음커뮤니케이션, 카카오 김연지 [email protected]

Upload: -

Post on 21-Jan-2017

4.020 views

Category:

Internet


8 download

TRANSCRIPT

For 연세대학교

IT 서비스개발, 15년

2015. 10. 6

다음커뮤니케이션, 카카오

김연지

[email protected]

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

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

FEM:성과

100

75

50

25

150

200

250

1차배포

2차배포

3차배포

4차배포

5%

엔지니어의 가치 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

• 에러 : 쌓았다가 리포팅, 스토어 모니터링

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 시도 좋음