SlideShare uma empresa Scribd logo
1 de 6
www.javaspecialist.co.kr
www.javaspecialist.co.kr
웹 어플리케이션 아키텍처
시대별 웹어플리케이션 아키텍처의 변화에 대해 알아본다.
1
www.javaspecialist.co.kr
1. 웹 문서 시대(1990년대)
• 웹 서버와 브라우저간 정적인 HTML문서를 주로 보내거나 CGI(Common Gateway Interface)를 이용하여
개발하는 경우
• 마크업과 프로그램 코드가 섞여있는 개발 방식을 사용함.
• 개발 직군간의 업무 분담이 전혀 이루어지지 않는 상태.
Client
Web Server
<html>
<title><?= title ?></title>
<body>
<font size=2>Hello World</font>
<?=mysql_query("SELECT NAME…)?>
…
</body>
</html>
-----------------------------------------------------
-----------------------------------------------------Browser Plug-in
Web Container
<<HTTP>>
HTTP response
HTTP request
Database
<html>
<title>타이틀</title>
<style>…</style>
<script>…</cript>
<body>
</body>
</html>
이 그림은 파일이 저장된 위치를 의미하는 것이 아니다.
실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다.
수퍼개발
자!
2
www.javaspecialist.co.kr
2. 웹 표준 시대(2000년대 초반)
• 2000년대 초반으로 오면서 백엔드 개발에서는 이른바 MVC 모델이라는 기법을 통해 데이터 모델과 템플
릿 그리고 비즈니스 로직이 분리된 코드를 통해 개발 생산성을 높이게 된다.
• 프론트엔드에서도 웹 표준 개발 방법론을 통해 구조(HTML), 표현(CSS), 동작(DOM Script)를 분리하고
CSS 레이아웃과 W3C 기반 DOM을 통한 웹 개발 방식을 많이 이용하게 된다.
Client
Web Server
<%
--------
--------
-----
-------
--------
-----
%>
-----------------------------------------------------
-----------------------------------------------------Browser
Web Container
<<HTTP>>
HTTP response
HTTP request
DatabaseView
Model
DAOVO
Controller
HTML CSS JS
구조 표현 동작
Plug-in
이 구조는 아직까지 대
부분의 웹 어플리케이
션에서 가장 많이 사용
하는 구조이다.
이 그림은 파일이 저장된 위치를 의미하는 것이 아니다.
실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다.
요청 처리 결과는
HTML, CSS, 스크립
트코드, 데이터를 모
두 포함한다.
3
www.javaspecialist.co.kr
3. Ajax 시대(2000년대 후반)
• 2004년 지메일과 구글맵스가 소개되면서 프론트 엔드 부분에 웹 기술의 혁신이 일어나게 된다.
• 즉, 프론트엔드 웹 콘텐츠가 고객의 PC에 일단 로딩이 된 다음에는, 웹 서버에 Ajax(비동기) 호출을 통해
데이터를 받아 온 후 기존 DOM을 갱신하여 화면 정보를 갱신시키는 개발 방법이다.
• 이 방법을 통하면 백엔드 개발자가 json과 같은 데이터 기반 응답만 하게 되므로 더 간단한 웹 개발이 이루
어진다. 이에 반해 프론트엔드 개발자는 다양하고 풍부한 사용자 경험을 제공하는 웹 애플리케이션 개발
이 가능해졌습니다.
Client
Web Server
{
"Name": "JK",
"Age":30
}
-----------------------------------------------------
-----------------------------------------------------Browser
Web Container
<<HTTP>>
HTTP response
(Data)
HTTP request
(Asynchronous)
Database
View
Model
DAOVO
Controller
HTML CSS JS
구조 표현 동작
Plug-in
이 그림은 파일이 저장된 위치를 의미하는 것이 아니다.
실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다.
요청 처리 결과
로 데이터만 반
환한다.
스크립트 코드는 요
청 결과를 받아
HTML 페이지에 결과
를 동적으로 반영한
다.
4
www.javaspecialist.co.kr
4. HTML5시대(2010년대 초반)
• HTML5가 가져올 가장 큰 변화는 서버와 독립적인 웹 애플리케이션의 개발이 가능하다는 것이다.
• 특히, 모바일 환경에서 오프라인 기능과 로컬 데이터베이스의 지원은 웹 서버와 독립할 수 있는 여건을 만
들어 준다.
• 특히, HTML5의 Canvas, Video, Audio, 드래그앤드롭, 지오로케이션, 파일API, 데이터저장소, 웹소켓 등을
통한 사용자 경험을 확대해 줄 수 있다.
Web Server
{
"Name": "JK",
"Age":30
}
-----------------------------------------------------
-----------------------------------------------------
Web Container
<<HTTP>>
HTTP response
(Data)
HTTP request
(Asynchronous)
Database
View
Model
DAOVO
Controller
WebService
Client
Browser
HTML CSS JS
구조 표현 동작
Storage
이 그림은 파일이 저장된 위치를 의미하는 것이 아니다.
실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다.
HTML5 = HTML5 + CSS3 + JavaScript
5
www.javaspecialist.co.kr
5. 브라우저 동작 원리
6
Webkit 렌더링 엔진의 메인 플로우
HTML
Style
Sheets
HTML
Parser
Painting
DOM
Tree
Layout
CSS
Parser
Attachment
Render
Tree
Style
Rules
Display
DOM
자바스크립트로
DOM Tree의 객체
를 제어한다면 화면
조작이 가능하다는
의미이다.
물론 그럴려면 자바스크
립트가 실행되기 전에
HTML문서가 파싱되어
DOM Tree가 만들어져
있어야 한다는 것이다.
스타일을 처리하고
(computation)
renderer를 생성하
는 과정을 말한다.
렌더 객체가 위치와
크기가 갖게 되는
과정을 말한다.
렌더링 트리를 탐색
하면서 특정 메모리
공간에 RGB값을
채우는 과정이다.

Mais conteúdo relacionado

Mais procurados

자바카페 프론트엔드스터디 E01 - HTML5
자바카페 프론트엔드스터디 E01 - HTML5자바카페 프론트엔드스터디 E01 - HTML5
자바카페 프론트엔드스터디 E01 - HTML5Young-Beom Rhee
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴Terry Cho
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬Channy Yun
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝Mungyu Choi
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)Sang Don Kim
 
[2014널리세미나] 웹 서비스분석 MEAN Stack과 PhantomJS만 알면 끝!
[2014널리세미나] 웹 서비스분석 MEAN Stack과  PhantomJS만 알면 끝![2014널리세미나] 웹 서비스분석 MEAN Stack과  PhantomJS만 알면 끝!
[2014널리세미나] 웹 서비스분석 MEAN Stack과 PhantomJS만 알면 끝!Nts Nuli
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summaryHoChul Shin
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐Terry Cho
 
5. 솔루션 카달로그
5. 솔루션 카달로그5. 솔루션 카달로그
5. 솔루션 카달로그Terry Cho
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드Terry Cho
 
CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료Hyojin Song
 
3.web의역사와browser
3.web의역사와browser3.web의역사와browser
3.web의역사와browsercheonsu park
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCUBRID
 
0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션DataUs
 

Mais procurados (20)

Learning HTML5
Learning HTML5Learning HTML5
Learning HTML5
 
자바카페 프론트엔드스터디 E01 - HTML5
자바카페 프론트엔드스터디 E01 - HTML5자바카페 프론트엔드스터디 E01 - HTML5
자바카페 프론트엔드스터디 E01 - HTML5
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
 
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
[Td 2015]치즈케이크 팩토리는 알겠는데, 데이터 팩토리는 뭔가요(한기환)
 
[2014널리세미나] 웹 서비스분석 MEAN Stack과 PhantomJS만 알면 끝!
[2014널리세미나] 웹 서비스분석 MEAN Stack과  PhantomJS만 알면 끝![2014널리세미나] 웹 서비스분석 MEAN Stack과  PhantomJS만 알면 끝!
[2014널리세미나] 웹 서비스분석 MEAN Stack과 PhantomJS만 알면 끝!
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
CouchDB - Introduction - Korean
CouchDB - Introduction - KoreanCouchDB - Introduction - Korean
CouchDB - Introduction - Korean
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
5. 솔루션 카달로그
5. 솔루션 카달로그5. 솔루션 카달로그
5. 솔루션 카달로그
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드
 
JWT
JWTJWT
JWT
 
CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료
 
3.web의역사와browser
3.web의역사와browser3.web의역사와browser
3.web의역사와browser
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 Migration
 
0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션
 

Semelhante a 1. 웹 어플리케이션 아키텍처

7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...Amazon Web Services Korea
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021Amazon Web Services Korea
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트Dong-Jin Park
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Wonkyung Lyu
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 jeong seok yang
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)중선 곽
 
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
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010Joone Hur
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기Jaewoo Ahn
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...Amazon Web Services Korea
 
NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER Engineering
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례if kakao
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty ServerJungWoon Lee
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
Windows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsWindows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsJung Hyun Nam
 

Semelhante a 1. 웹 어플리케이션 아키텍처 (20)

7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트
 
Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles Social Tutorial Platform: Webbles
Social Tutorial Platform: Webbles
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
 
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...
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
 
NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
Windows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsWindows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and Operations
 

Mais de JinKyoungHeo

자바야 놀자 PPT
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPTJinKyoungHeo
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtimeJinKyoungHeo
 
5-5. html5 connectivity
5-5. html5 connectivity5-5. html5 connectivity
5-5. html5 connectivityJinKyoungHeo
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storageJinKyoungHeo
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device accessJinKyoungHeo
 
5-2. html5 multimedia
5-2. html5 multimedia5-2. html5 multimedia
5-2. html5 multimediaJinKyoungHeo
 
5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphicsJinKyoungHeo
 

Mais de JinKyoungHeo (13)

자바야 놀자 PPT
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPT
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
 
5-5. html5 connectivity
5-5. html5 connectivity5-5. html5 connectivity
5-5. html5 connectivity
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storage
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
 
5-2. html5 multimedia
5-2. html5 multimedia5-2. html5 multimedia
5-2. html5 multimedia
 
5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphics
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
4-2. ajax
4-2. ajax4-2. ajax
4-2. ajax
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
3-2. selector api
3-2. selector api3-2. selector api
3-2. selector api
 
3-1. css
3-1. css3-1. css
3-1. css
 
2 1. html4.01
2 1. html4.012 1. html4.01
2 1. html4.01
 

1. 웹 어플리케이션 아키텍처

  • 1. www.javaspecialist.co.kr www.javaspecialist.co.kr 웹 어플리케이션 아키텍처 시대별 웹어플리케이션 아키텍처의 변화에 대해 알아본다. 1
  • 2. www.javaspecialist.co.kr 1. 웹 문서 시대(1990년대) • 웹 서버와 브라우저간 정적인 HTML문서를 주로 보내거나 CGI(Common Gateway Interface)를 이용하여 개발하는 경우 • 마크업과 프로그램 코드가 섞여있는 개발 방식을 사용함. • 개발 직군간의 업무 분담이 전혀 이루어지지 않는 상태. Client Web Server <html> <title><?= title ?></title> <body> <font size=2>Hello World</font> <?=mysql_query("SELECT NAME…)?> … </body> </html> ----------------------------------------------------- -----------------------------------------------------Browser Plug-in Web Container <<HTTP>> HTTP response HTTP request Database <html> <title>타이틀</title> <style>…</style> <script>…</cript> <body> </body> </html> 이 그림은 파일이 저장된 위치를 의미하는 것이 아니다. 실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다. 수퍼개발 자! 2
  • 3. www.javaspecialist.co.kr 2. 웹 표준 시대(2000년대 초반) • 2000년대 초반으로 오면서 백엔드 개발에서는 이른바 MVC 모델이라는 기법을 통해 데이터 모델과 템플 릿 그리고 비즈니스 로직이 분리된 코드를 통해 개발 생산성을 높이게 된다. • 프론트엔드에서도 웹 표준 개발 방법론을 통해 구조(HTML), 표현(CSS), 동작(DOM Script)를 분리하고 CSS 레이아웃과 W3C 기반 DOM을 통한 웹 개발 방식을 많이 이용하게 된다. Client Web Server <% -------- -------- ----- ------- -------- ----- %> ----------------------------------------------------- -----------------------------------------------------Browser Web Container <<HTTP>> HTTP response HTTP request DatabaseView Model DAOVO Controller HTML CSS JS 구조 표현 동작 Plug-in 이 구조는 아직까지 대 부분의 웹 어플리케이 션에서 가장 많이 사용 하는 구조이다. 이 그림은 파일이 저장된 위치를 의미하는 것이 아니다. 실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다. 요청 처리 결과는 HTML, CSS, 스크립 트코드, 데이터를 모 두 포함한다. 3
  • 4. www.javaspecialist.co.kr 3. Ajax 시대(2000년대 후반) • 2004년 지메일과 구글맵스가 소개되면서 프론트 엔드 부분에 웹 기술의 혁신이 일어나게 된다. • 즉, 프론트엔드 웹 콘텐츠가 고객의 PC에 일단 로딩이 된 다음에는, 웹 서버에 Ajax(비동기) 호출을 통해 데이터를 받아 온 후 기존 DOM을 갱신하여 화면 정보를 갱신시키는 개발 방법이다. • 이 방법을 통하면 백엔드 개발자가 json과 같은 데이터 기반 응답만 하게 되므로 더 간단한 웹 개발이 이루 어진다. 이에 반해 프론트엔드 개발자는 다양하고 풍부한 사용자 경험을 제공하는 웹 애플리케이션 개발 이 가능해졌습니다. Client Web Server { "Name": "JK", "Age":30 } ----------------------------------------------------- -----------------------------------------------------Browser Web Container <<HTTP>> HTTP response (Data) HTTP request (Asynchronous) Database View Model DAOVO Controller HTML CSS JS 구조 표현 동작 Plug-in 이 그림은 파일이 저장된 위치를 의미하는 것이 아니다. 실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다. 요청 처리 결과 로 데이터만 반 환한다. 스크립트 코드는 요 청 결과를 받아 HTML 페이지에 결과 를 동적으로 반영한 다. 4
  • 5. www.javaspecialist.co.kr 4. HTML5시대(2010년대 초반) • HTML5가 가져올 가장 큰 변화는 서버와 독립적인 웹 애플리케이션의 개발이 가능하다는 것이다. • 특히, 모바일 환경에서 오프라인 기능과 로컬 데이터베이스의 지원은 웹 서버와 독립할 수 있는 여건을 만 들어 준다. • 특히, HTML5의 Canvas, Video, Audio, 드래그앤드롭, 지오로케이션, 파일API, 데이터저장소, 웹소켓 등을 통한 사용자 경험을 확대해 줄 수 있다. Web Server { "Name": "JK", "Age":30 } ----------------------------------------------------- ----------------------------------------------------- Web Container <<HTTP>> HTTP response (Data) HTTP request (Asynchronous) Database View Model DAOVO Controller WebService Client Browser HTML CSS JS 구조 표현 동작 Storage 이 그림은 파일이 저장된 위치를 의미하는 것이 아니다. 실행이 어디에서 되는지를 보여주기 위해 클라이언트와 서버를 나눠 표현했다. HTML5 = HTML5 + CSS3 + JavaScript 5
  • 6. www.javaspecialist.co.kr 5. 브라우저 동작 원리 6 Webkit 렌더링 엔진의 메인 플로우 HTML Style Sheets HTML Parser Painting DOM Tree Layout CSS Parser Attachment Render Tree Style Rules Display DOM 자바스크립트로 DOM Tree의 객체 를 제어한다면 화면 조작이 가능하다는 의미이다. 물론 그럴려면 자바스크 립트가 실행되기 전에 HTML문서가 파싱되어 DOM Tree가 만들어져 있어야 한다는 것이다. 스타일을 처리하고 (computation) renderer를 생성하 는 과정을 말한다. 렌더 객체가 위치와 크기가 갖게 되는 과정을 말한다. 렌더링 트리를 탐색 하면서 특정 메모리 공간에 RGB값을 채우는 과정이다.