SlideShare a Scribd company logo
Java 기반Web의 역사
UMC3기Server
소프트웨어학과 20 김준기
INDEX
INDEX
1 2 3 4 5
최초의WebServer CGI Servlet Spring Spring Boot
최초의WebServer
정적인 페이지만 제공할 수 있었다!
최초의WebServer의 한계
최초의WebServer의 한계
동적인 페이지도 제공하고 싶다!
최초의WebServer의 한계
CGI (공용 게이트웨이 인터페이스)
- 서버와 애플리케이션 간의 데이터를 주고 받는 방식 또는 컨벤션
- 이런 CGI를 기반으로 C, PHP등으로 구현체를 만듬
- 현재의 WAS 서버의 역할
CGI
구현체
CGI의 단점
Web
Server
Client DB
CGI
구현체
CGI의 단점
Web
Server
CGI
구현체
CGI
구현체
프로세스
프로세스
프로세스
CGI의 단점
Servlet
CGI
구현체
Web
Server
CGI
구현체
CGI
구현체
프로세스
프로세스
프로세스
스레드
Servlet
구현체
Servlet
구현체
Servlet
구현체
스레드
스레드
1
Servlet
Web
Server
프로세스
프로세스
프로세스
스레드
스레드
스레드
Servlet
구현체
1
2
Servlet
Web
Server
프로세스
프로세스
프로세스
스레드
스레드
스레드
Servlet
구현체
Servlet Container
3
Servlet (프로세스 -> 스레드)
Servlet (프로세스 -> 스레드)
손님
Servlet (프로세스 -> 스레드)
손님
Servlet (프로세스 -> 스레드)
손님
Servlet (프로세스 -> 스레드)
손님
Servlet (스레드 풀) -> 흐름과 살짝 다름
Servlet (스레드 풀) -> 흐름과 살짝 다름
손님
Servlet (스레드 풀) -> 흐름과 살짝 다름
손님
Servlet (스레드 풀) -> 흐름과 살짝 다름
손님
Servlet (싱글톤[Singleton]) -> 흐름과 살짝 다름
어플리케이션(프로세스) 안에 객체가 1개만 있는 패턴.
장점: 요청마다 객체를 생성하면 너무 높은 cost 발생
-> 메모리를 아낄 수 있다.
Servlet
Servlet Container Web Container
Servlet
Web Container
Servlet의 생명주기 관리
웹서버와의 통신 지원
Servlet의 구조
Init()
Service()
Destroy()
Servlet
Servlet 구현체 생성
비즈니스 로직 수행
Servlet 구현체 삭제
doGet(),
doPost()
등에 구현
Servlet의 구조
Java 코드로
HTML을 만드는데 한계가 있음
JSP(JavaServer Page)의 등장
JSP(JavaServer Page)의 등장
JSP로는 복잡한 비즈니스 로직
구현이 어려움
Servlet + JSP + MVC 패턴
MVC 패턴: Model, View, Controller
Model
View
Controller
Java Object
JSP
Servlet
Data 전달
화면 렌더링
비즈니스 로직 수행
Servlet + JSP + MVC 패턴
MVC 패턴: Model, View, Controller
Model
View
Controller
Java Object
JSP
Servlet
Data 전달
화면 렌더링
비즈니스 로직 수행
로직이 복잡해질 수록 공통으로
처리해야하는 부분이 많아진다!!
ex) log 출력
프론트 컨트롤러(FrontController)패턴의 등장!
Front
Controller
1번 Controller
2번 Controller
3번 Controller
Client
Client
Client
Spring을 만들자!
객체지향의 장점을 잘 살린 패턴
너도 나도 쓴다!
겹치는 부분이 다수 발생
MVC 패턴을 자동화 시킨
FrameWork들의 등장
@Controller 등의 어노테이션으로
Spring의 압승
Spring
Spring
Client
Dispatcher
Servlet
Controller 맵핑 Controller
어댑터 목록
Controller
어댑터
Controller
viewResolver
View
HTTP요청
Controller
조회
Controller
이름 전달
Controller 어댑터에게
요청 전달
어댑터
이름 전달
Controller 어댑터 조회
Controller 호출
Model과 View 논리적
이름 전달
Model과 View 논리적
이름 전달
View 논리적 이름 전달
View 물리적
이름 전달
Model 전달
Rendering
Spring
Client
Dispatcher
Servlet
Controller 맵핑 Controller
어댑터 목록
Controller
어댑터
Controller
viewResolver
View
HTTP요청
Controller
조회
Controller
이름 전달
Controller 어댑터에게
요청 전달
어댑터
이름 전달
Controller 어댑터 조회
Controller 호출
Model과 View 논리적
이름 전달
Model과 View 논리적
이름 전달
View 논리적 이름 전달
View 물리적
이름 전달
Model 전달
Rendering
Spring
Controller
Spring
Client
Dispatcher
Servlet
Controller 맵핑 Controller
어댑터 목록
Controller
어댑터
Controller
viewResolver
View
HTTP요청
Controller
조회
Controller
이름 전달
Controller 어댑터에게
요청 전달
어댑터
이름 전달
Controller 어댑터 조회
Controller 호출
Model과 View 논리적
이름 전달
Model과 View 논리적
이름 전달
View 논리적 이름 전달
View 물리적
이름 전달
Model 전달
Rendering
Spring
Controller
Spring에게 치명적인
단점이 있었다!!
Spring의 단점
Spring의 단점
톰캣 수동설치
라이브러리 간의 종속성 X
외부 라이브러리 버전 수동 구성
Spring의 단점
톰캣 수동설치
라이브러리 간의 종속성 X
외부 라이브러리 버전 수동 구성
환경설정이 절반인
Spring의 악랄한 설정 환경
Spring Boot
2014
Spring Boot
톰캣 내장
연관된 라이브러리 자동
호출(starter)
스프링과 외부 라이브러리 간의
버전 자동 구성
DB Connection
Spring Boot
Spring Boot
Spring Boot
Commons-dbcp Tomcat-jdbc-pool HikariCP
Spring Boot
HikariCP
Spring Boot
CGI
정리
최초의
WebServer
Servlet
Spring
SpringBoot
감사합니다 Thank You
지금까지 발표를 들어 주셔서 감사합니다 : )

More Related Content

Similar to [KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기

Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista Community
 
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
Sang Don Kim
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
선협 이
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
J B
 
어서 와~ ASP.NET Core는 처음이지?
어서 와~ ASP.NET Core는 처음이지?어서 와~ ASP.NET Core는 처음이지?
어서 와~ ASP.NET Core는 처음이지?
SangHoon Han
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
종훈 박
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista Community
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
SeongHyun Ahn
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Bansook Nam
 
One ASP.NET
One ASP.NETOne ASP.NET
One ASP.NET
SangHoon Han
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기
Myung Woon Oh
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
Jae Sung Park
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트
Dong-Jin Park
 
[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc
구 봉
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
SangIn Choung
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
ymtech
 
윤석진 Jco jdbc
윤석진 Jco jdbc윤석진 Jco jdbc
윤석진 Jco jdbcSukjin Yun
 
Basic.pptx
Basic.pptxBasic.pptx
Basic.pptx
Won Jin Do
 
Backbone 발표
Backbone 발표Backbone 발표
Backbone 발표
Gunhee Lee
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
중선 곽
 

Similar to [KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기 (20)

Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
 
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
[Td 2015]각이 다른 mvc6! 그 여섯 번째 이야기!(최지훈)
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
 
어서 와~ ASP.NET Core는 처음이지?
어서 와~ ASP.NET Core는 처음이지?어서 와~ ASP.NET Core는 처음이지?
어서 와~ ASP.NET Core는 처음이지?
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
 
One ASP.NET
One ASP.NETOne ASP.NET
One ASP.NET
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트
 
[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc[웹기반시스템 3조] mvc
[웹기반시스템 3조] mvc
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
윤석진 Jco jdbc
윤석진 Jco jdbc윤석진 Jco jdbc
윤석진 Jco jdbc
 
Basic.pptx
Basic.pptxBasic.pptx
Basic.pptx
 
Backbone 발표
Backbone 발표Backbone 발표
Backbone 발표
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 

[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기

Editor's Notes

  1. 1996
  2. 1996
  3. 1996
  4. 2003
  5. 2003