SlideShare a Scribd company logo
1 of 37
Server Side Rendering
(feat. )
24기 지무근
INDEX
1. Single Page Application
2. Server Side Rendering
3. Next.js
Single Page Application (SPA)
Single Page Application (SPA)
✓
✓ 매번 서버로부터 페이지를 받아 오는 것이 아닌
현재 페이지의 내용을 변경하여 표시하는 웹 어플리케이션
✓ 중복되는 부분 생략 가능
✓ 실제 페이지의 이동이 일어나지 않음
Single Page Application (SPA)
No reload !
Interaction
Data
Multi Page Application (?)
Page reload
Interaction
Single Page Application (SPA)
✓ Client Side Rendering 사용
✓ Rendering: View을 구성하는 단계
✓ Rendering 시점에 따라
Client Side Rendering (CSR)
Server Side Rendering (SSR)
Rendered HTML
Server Side Rendering (traditional way)
Browser Server
Request
Rendered HTML Rendering
Additional Data
Client Side Rendering
Browser Server
Request
Empty HTML
Rendering
Additional Data
view-source
rendered
SPA와 Routing
✓ AJAX
✓ Hash (fragment identifier)
✓ History API (HTML 5)
AJAX
✓ AJAX: Javascript를 사용하여
비동기적으로 데이터를 가져오는 기법
✓ JQuery
AJAX
✓ AJAX: Javascript를 사용하여
비동기적으로 데이터를 가져오는 기법
✓ DOM 조작(페이지의 내용을 조작)을
통해 페이지 이동을 구현
✓ 하나의 주소로 동작하기 때문에 history
관리 불가능
Hash (Fragment Identifier)
✓ subsection을 가리킬 수 있는 기능을 활용
https://en.wikipedia.org/wiki/Fragment_identifier#Basics
✓ 본래 기능과 구분하기 위해 # 대신 #! (hash bang) 또한 사용
✓ 별도의 URL의 형태로 존재하므로, 브라우저에서 history를 관리하는 것이 가능
✓ Vue-Router (history 방식으로도 설정 가능)
History API
✓ 사용자 히스토리 내에서 이동 (back, forward, go === 브라우저 버튼)
✓ https://developer.mozilla.org/ko/docs/Web/API/History
✓ window.history.back( ); window.history.forward( );
✓ pushState, replaceState
✓ 새로고침 없이 세션 히스토리를 조작
✓ React-Router, Angular Router, PJAX
Server Side Rendering
CSR vs SSR
✓ CSR이 초기 loading 속도는 느리지만,
user interaction에 따른 loading 속도는 빠름
✓ SSR의 경우, 초기 loading 속도가 빨라 유저가 더
빠르게 컨텐츠를 이용 가능
✓ SEO 문제 crawler들은 javascript을 실행할 수
없기에, CSR의 경우 완성된(의도된) 페이지가
아닌 빈 페이지를 crawl 할 수 있음
Googlebot
✓ 대단해….
But
✓ Two wave indexing (resource limitation)
CSR을 통해 만들어진 페이지 변화가
즉각적으로 indexing 되지 않음
✓ 네이버, 다음, Bing, Baidu 등 Google 외의
검색엔진 대응
그러면 CSR은 버리나요
✓ 단점을 보완해 봅시다
✓ Hybrid Rendering
✓ Dynamic Rendering
Hybrid Rendering
✓ 초기엔 Server Side Rendering
✓ 이후 user interaction에 따라 Client Side
Rendering
✓ 빠른 초기 loading + 빠른 유저 interaction
✓ Crawler는 Server Side Rendering 된
HTML을 수집  SEO 문제 해결
Dynamic Rendering (구글 추천)
✓ Crawler 에 대한 개별적인 대응
✓ User-Agent detection
✓ 기존 CSR 코드 변경 없이 적용
Dynamic Renderers
○ Puppeteers
○ Rendertron
Next.js
✓ React Framework
✓ Server Side Rendering
✓ Auto Code Splitting
✓ Hulu, Material ui, twitch mobile …
Hello, Next.js !
$ mkdir next-ex && cd next-ex
$ npm init -y
$ npm install react react-dom next
$ mkdir pages
$ npm run dev
Next.js routing?
Server Side Rendering?
✓ initial load 시 SSR 사용
✓ 이후 user interaction 에 따라 CSR
✓ getInitalProps
1. SSR 시점
2. CSR 시점
URL 직접 접근: SSR Link를 통해 접근: CSR

More Related Content

What's hot

AWS 구축 경험 공유
AWS 구축 경험 공유AWS 구축 경험 공유
AWS 구축 경험 공유
민태 김
 

What's hot (12)

어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
 
Rainbow Project Web App
Rainbow Project Web AppRainbow Project Web App
Rainbow Project Web App
 
Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리Saturday Azure Live 1701 Azure WebApp 개념원리
Saturday Azure Live 1701 Azure WebApp 개념원리
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
 
글로벌 웹사이트 구축을 꿈꾸는 당신에게: Azure WebSites and WebJobs
글로벌 웹사이트 구축을 꿈꾸는 당신에게: Azure WebSites and WebJobs글로벌 웹사이트 구축을 꿈꾸는 당신에게: Azure WebSites and WebJobs
글로벌 웹사이트 구축을 꿈꾸는 당신에게: Azure WebSites and WebJobs
 
서버를 위한 동시성 모델과 Staged eventdrivenarchitecture
서버를 위한 동시성 모델과 Staged eventdrivenarchitecture서버를 위한 동시성 모델과 Staged eventdrivenarchitecture
서버를 위한 동시성 모델과 Staged eventdrivenarchitecture
 
I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages
 
CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
 
AWS 구축 경험 공유
AWS 구축 경험 공유AWS 구축 경험 공유
AWS 구축 경험 공유
 
[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민
[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민
[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민
 
[Swift] Proxy
[Swift] Proxy[Swift] Proxy
[Swift] Proxy
 

Similar to Sever Side Rendering - 2019 Zeropage Devil's Camp

HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
Sang Seok Lim
 

Similar to Sever Side Rendering - 2019 Zeropage Devil's Camp (20)

우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
 
Web server
Web serverWeb server
Web server
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향
 
웹수집(Web Crawling)
웹수집(Web Crawling)웹수집(Web Crawling)
웹수집(Web Crawling)
 
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3 AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 Preview
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
 
W3C HTML5 Conference 2015 - NAVER 웹 기술 및 환경 전망
W3C HTML5 Conference 2015 - NAVER 웹 기술 및 환경 전망W3C HTML5 Conference 2015 - NAVER 웹 기술 및 환경 전망
W3C HTML5 Conference 2015 - NAVER 웹 기술 및 환경 전망
 
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
 
Front-end Development with Ruby on Rails
Front-end Development with Ruby on RailsFront-end Development with Ruby on Rails
Front-end Development with Ruby on Rails
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
 

Recently uploaded

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
Wonjun Hwang
 

Recently uploaded (6)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 

Sever Side Rendering - 2019 Zeropage Devil's Camp

  • 1. Server Side Rendering (feat. ) 24기 지무근
  • 2. INDEX 1. Single Page Application 2. Server Side Rendering 3. Next.js
  • 3.
  • 5. Single Page Application (SPA) ✓ ✓ 매번 서버로부터 페이지를 받아 오는 것이 아닌 현재 페이지의 내용을 변경하여 표시하는 웹 어플리케이션 ✓ 중복되는 부분 생략 가능 ✓ 실제 페이지의 이동이 일어나지 않음
  • 6.
  • 7.
  • 8. Single Page Application (SPA) No reload ! Interaction Data
  • 9.
  • 10.
  • 11. Multi Page Application (?) Page reload Interaction
  • 12. Single Page Application (SPA) ✓ Client Side Rendering 사용 ✓ Rendering: View을 구성하는 단계 ✓ Rendering 시점에 따라 Client Side Rendering (CSR) Server Side Rendering (SSR)
  • 14. Server Side Rendering (traditional way) Browser Server Request Rendered HTML Rendering Additional Data
  • 15. Client Side Rendering Browser Server Request Empty HTML Rendering Additional Data
  • 17. SPA와 Routing ✓ AJAX ✓ Hash (fragment identifier) ✓ History API (HTML 5)
  • 18. AJAX ✓ AJAX: Javascript를 사용하여 비동기적으로 데이터를 가져오는 기법 ✓ JQuery
  • 19. AJAX ✓ AJAX: Javascript를 사용하여 비동기적으로 데이터를 가져오는 기법 ✓ DOM 조작(페이지의 내용을 조작)을 통해 페이지 이동을 구현 ✓ 하나의 주소로 동작하기 때문에 history 관리 불가능
  • 20. Hash (Fragment Identifier) ✓ subsection을 가리킬 수 있는 기능을 활용 https://en.wikipedia.org/wiki/Fragment_identifier#Basics ✓ 본래 기능과 구분하기 위해 # 대신 #! (hash bang) 또한 사용 ✓ 별도의 URL의 형태로 존재하므로, 브라우저에서 history를 관리하는 것이 가능 ✓ Vue-Router (history 방식으로도 설정 가능)
  • 21. History API ✓ 사용자 히스토리 내에서 이동 (back, forward, go === 브라우저 버튼) ✓ https://developer.mozilla.org/ko/docs/Web/API/History ✓ window.history.back( ); window.history.forward( ); ✓ pushState, replaceState ✓ 새로고침 없이 세션 히스토리를 조작 ✓ React-Router, Angular Router, PJAX
  • 23. CSR vs SSR ✓ CSR이 초기 loading 속도는 느리지만, user interaction에 따른 loading 속도는 빠름 ✓ SSR의 경우, 초기 loading 속도가 빨라 유저가 더 빠르게 컨텐츠를 이용 가능 ✓ SEO 문제 crawler들은 javascript을 실행할 수 없기에, CSR의 경우 완성된(의도된) 페이지가 아닌 빈 페이지를 crawl 할 수 있음
  • 25. But ✓ Two wave indexing (resource limitation) CSR을 통해 만들어진 페이지 변화가 즉각적으로 indexing 되지 않음 ✓ 네이버, 다음, Bing, Baidu 등 Google 외의 검색엔진 대응
  • 26. 그러면 CSR은 버리나요 ✓ 단점을 보완해 봅시다 ✓ Hybrid Rendering ✓ Dynamic Rendering
  • 27. Hybrid Rendering ✓ 초기엔 Server Side Rendering ✓ 이후 user interaction에 따라 Client Side Rendering ✓ 빠른 초기 loading + 빠른 유저 interaction ✓ Crawler는 Server Side Rendering 된 HTML을 수집  SEO 문제 해결
  • 28. Dynamic Rendering (구글 추천) ✓ Crawler 에 대한 개별적인 대응 ✓ User-Agent detection ✓ 기존 CSR 코드 변경 없이 적용 Dynamic Renderers ○ Puppeteers ○ Rendertron
  • 30. ✓ React Framework ✓ Server Side Rendering ✓ Auto Code Splitting ✓ Hulu, Material ui, twitch mobile …
  • 31. Hello, Next.js ! $ mkdir next-ex && cd next-ex $ npm init -y $ npm install react react-dom next $ mkdir pages
  • 32. $ npm run dev
  • 34.
  • 35. Server Side Rendering? ✓ initial load 시 SSR 사용 ✓ 이후 user interaction 에 따라 CSR ✓ getInitalProps 1. SSR 시점 2. CSR 시점
  • 36.
  • 37. URL 직접 접근: SSR Link를 통해 접근: CSR