SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
SWR
Data fetching 라이브러리
주제 선정 이유
퍼포먼스 향상을 위한 서버 state 관리의 필요성을 절실히 느낌
반복되는 호출과 렌더링에 스트레스 받음
효율적인 API콜의 필요성을 절실히 느낌
2020년 부터 React Query나 SWR 같은 data fetching 라이브러리
가 인기를 끌고 있고 현재도 꾸준히 순항 중인 것을 볼 수 있음
React Query SWR
인기를 끌 수 있던 이유가 뭘까?
기존 상태 관리 라이브러리 문제점
1. 서버에서 fetching 해온 데이터의 경우 시간이 지날수록 일관성이 깨짐
2. 데이터를 최신으로 유지하기 위해 주기적으로 호출해야함
3. 이로 인해 추가적인 많은 코드작성이 필요함
4. 비동기적 데이터 fetching을 위해 미들웨어의 사용 필수
SWR의 장점
1. 빠르고, 가볍고, 재사용 가능한 데이터를 가져올 수 있음
2. 최초 데이터를 수집 후 캐시된 데이터를 이용하여 효율적인 동작을 만들어냄
3. 스마트한 에러 재시도
4. 포커싱 시 갱신
5. 소켓을 사용하지 않고도 주기적인 동기화 가능
6. Redux의 복잡한 Boilerplate 보다 훨씬 간결한 코드
Local State: 리액트 컴포넌트 안에서만 사용되는 state
React State
Global State: Global Store에 정의되어 어디에서나 접근 가능한 state
Server State: 서버로부터 받아오는 state
vs
SWR (data fetching)
Redux (상태관리)
본질 자체가 다르기 때문에 특정 관점에서 비교
Server State
비동기 처리
Redux Toolkit Server State
createAsyncThunk
프로미스를 반환하는 비동기 함수
Pending.type : pending 상태
Fulfilled.type : 통신 성공 상태
rejected.type : 통신 에러 상태
SWR Server State
Data error loading 상태를 한 번에 받아올 수 있음
SWR Server State
useSWR hook은 3개의 인자를 받을수 있음
Key : 요청을 위한 고유한 키 문자열 (fetcher 함수의 파라미터로 전달)
Fetcher : 데이터를 가져오기 위한 함수를 반환하는 Promise
Options: SWR hook을 위한 옵션 객체
SWR hook
SWR preload
캐싱 된 데이터가 있을 때
불필요한 요청 제거
굳이 재 요청 해서 받아 올 필요 없이
cacheKey를 이용하여 데이터 사용
유저가 서버에서 온 데이터를 로컬에서 수정 했을 때
1. 서버에 업데이트 요청을 보냄
2. 요청이 성공하거나, 실패하거나 기다림
3. 요청이 완료되면 화면에 업데이트된 UI를 나타냄
업데이트의 시간이 오래 걸리면 유저는 기다려야하는 문제점
낙관적인 UI
1. 로컬에서 데이터를 업데이트 시키고, 반영된 UI를 즉시 나타냄
2. 서버에 업데이트 요청을 보냄
3. 요청이 끝날 때 까지 기다림
4. 요청이 완료되면 서버 데이터와 로컬 데이터가 일치됨
유저의 눈에는 업데이트한 데이터가 즉시 반영된 것 처럼 보임
참고자료
useSWR 옵션 Link : https://swr.vercel.app/ko/docs/api
https://fe-developers.kakaoent.com/2022/220224-data-fetching-libs/
https://steadily-worked.tistory.com/565

Contenu connexe

Similaire à SWR

REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfHo Jeong Im
 
Performance Testing using Loadrunner
Performance Testingusing LoadrunnerPerformance Testingusing Loadrunner
Performance Testing using Loadrunnerhmfive
 
스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS Deck스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS DeckServerDevCamp
 
IBM WAS ND v8.5.5 소개자료
IBM WAS ND v8.5.5 소개자료IBM WAS ND v8.5.5 소개자료
IBM WAS ND v8.5.5 소개자료JungWoon Lee
 
React-Query가필요한가요.pptx
React-Query가필요한가요.pptxReact-Query가필요한가요.pptx
React-Query가필요한가요.pptxssuser89c688
 
서버인프라를지탱하는기술2_1-2
서버인프라를지탱하는기술2_1-2서버인프라를지탱하는기술2_1-2
서버인프라를지탱하는기술2_1-2HyeonSeok Choi
 
Building Large Scale Distributed System on AWS - Korean
Building Large Scale Distributed System on AWS - KoreanBuilding Large Scale Distributed System on AWS - Korean
Building Large Scale Distributed System on AWS - KoreanAmazon Web Services Korea
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Wonseok Jang
 
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...Cloud-Barista Community
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03Changyol BAEK
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservicesSeong-Bok Lee
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례선협 이
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개태준 문
 
Restful web service
Restful web serviceRestful web service
Restful web servicesunguen lee
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWSJi-Woong Choi
 
Html5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_apiHtml5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_apiSeiyon Lee
 

Similaire à SWR (20)

REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
 
Performance Testing using Loadrunner
Performance Testingusing LoadrunnerPerformance Testingusing Loadrunner
Performance Testing using Loadrunner
 
스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS Deck스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS Deck
 
3장
3장3장
3장
 
IBM WAS ND v8.5.5 소개자료
IBM WAS ND v8.5.5 소개자료IBM WAS ND v8.5.5 소개자료
IBM WAS ND v8.5.5 소개자료
 
React-Query가필요한가요.pptx
React-Query가필요한가요.pptxReact-Query가필요한가요.pptx
React-Query가필요한가요.pptx
 
서버인프라를지탱하는기술2_1-2
서버인프라를지탱하는기술2_1-2서버인프라를지탱하는기술2_1-2
서버인프라를지탱하는기술2_1-2
 
Building Large Scale Distributed System on AWS - Korean
Building Large Scale Distributed System on AWS - KoreanBuilding Large Scale Distributed System on AWS - Korean
Building Large Scale Distributed System on AWS - Korean
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
 
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservices
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
Restful web service
Restful web serviceRestful web service
Restful web service
 
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
[웨비나] Follow me! 클라우드 인프라 구축 기본편 - 강지나 테크 에반젤리스트
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
Html5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_apiHtml5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_api
 
Netra intro v4
Netra intro v4Netra intro v4
Netra intro v4
 

Plus de Wonjun Hwang

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
 
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)Wonjun Hwang
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)Wonjun Hwang
 
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)Wonjun Hwang
 
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)Wonjun Hwang
 
Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)Wonjun Hwang
 
JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)Wonjun Hwang
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Wonjun Hwang
 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyWonjun Hwang
 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyWonjun Hwang
 
얕은복사,깊은복사
얕은복사,깊은복사얕은복사,깊은복사
얕은복사,깊은복사Wonjun Hwang
 
Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Wonjun Hwang
 
완전 유용한 CSS 모음
완전 유용한 CSS 모음완전 유용한 CSS 모음
완전 유용한 CSS 모음Wonjun Hwang
 
2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드Wonjun Hwang
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링Wonjun Hwang
 
스마트한 팀 협업
스마트한 팀 협업스마트한 팀 협업
스마트한 팀 협업Wonjun Hwang
 

Plus de Wonjun Hwang (20)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)
 
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
 
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
 
Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)
 
JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)
 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team Study
 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team Study
 
PWA
PWAPWA
PWA
 
얕은복사,깊은복사
얕은복사,깊은복사얕은복사,깊은복사
얕은복사,깊은복사
 
Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기
 
완전 유용한 CSS 모음
완전 유용한 CSS 모음완전 유용한 CSS 모음
완전 유용한 CSS 모음
 
2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링
 
Passkey
PasskeyPasskey
Passkey
 
스마트한 팀 협업
스마트한 팀 협업스마트한 팀 협업
스마트한 팀 협업
 

SWR

  • 2. 주제 선정 이유 퍼포먼스 향상을 위한 서버 state 관리의 필요성을 절실히 느낌 반복되는 호출과 렌더링에 스트레스 받음 효율적인 API콜의 필요성을 절실히 느낌
  • 3. 2020년 부터 React Query나 SWR 같은 data fetching 라이브러리 가 인기를 끌고 있고 현재도 꾸준히 순항 중인 것을 볼 수 있음
  • 5. 인기를 끌 수 있던 이유가 뭘까?
  • 6. 기존 상태 관리 라이브러리 문제점 1. 서버에서 fetching 해온 데이터의 경우 시간이 지날수록 일관성이 깨짐 2. 데이터를 최신으로 유지하기 위해 주기적으로 호출해야함 3. 이로 인해 추가적인 많은 코드작성이 필요함 4. 비동기적 데이터 fetching을 위해 미들웨어의 사용 필수
  • 7. SWR의 장점 1. 빠르고, 가볍고, 재사용 가능한 데이터를 가져올 수 있음 2. 최초 데이터를 수집 후 캐시된 데이터를 이용하여 효율적인 동작을 만들어냄 3. 스마트한 에러 재시도 4. 포커싱 시 갱신 5. 소켓을 사용하지 않고도 주기적인 동기화 가능 6. Redux의 복잡한 Boilerplate 보다 훨씬 간결한 코드
  • 8. Local State: 리액트 컴포넌트 안에서만 사용되는 state React State Global State: Global Store에 정의되어 어디에서나 접근 가능한 state Server State: 서버로부터 받아오는 state
  • 9. vs SWR (data fetching) Redux (상태관리) 본질 자체가 다르기 때문에 특정 관점에서 비교
  • 11. Redux Toolkit Server State createAsyncThunk 프로미스를 반환하는 비동기 함수 Pending.type : pending 상태 Fulfilled.type : 통신 성공 상태 rejected.type : 통신 에러 상태
  • 12. SWR Server State Data error loading 상태를 한 번에 받아올 수 있음
  • 13. SWR Server State useSWR hook은 3개의 인자를 받을수 있음 Key : 요청을 위한 고유한 키 문자열 (fetcher 함수의 파라미터로 전달) Fetcher : 데이터를 가져오기 위한 함수를 반환하는 Promise Options: SWR hook을 위한 옵션 객체
  • 15. SWR preload 캐싱 된 데이터가 있을 때 불필요한 요청 제거 굳이 재 요청 해서 받아 올 필요 없이 cacheKey를 이용하여 데이터 사용
  • 16. 유저가 서버에서 온 데이터를 로컬에서 수정 했을 때 1. 서버에 업데이트 요청을 보냄 2. 요청이 성공하거나, 실패하거나 기다림 3. 요청이 완료되면 화면에 업데이트된 UI를 나타냄 업데이트의 시간이 오래 걸리면 유저는 기다려야하는 문제점
  • 17. 낙관적인 UI 1. 로컬에서 데이터를 업데이트 시키고, 반영된 UI를 즉시 나타냄 2. 서버에 업데이트 요청을 보냄 3. 요청이 끝날 때 까지 기다림 4. 요청이 완료되면 서버 데이터와 로컬 데이터가 일치됨 유저의 눈에는 업데이트한 데이터가 즉시 반영된 것 처럼 보임
  • 18. 참고자료 useSWR 옵션 Link : https://swr.vercel.app/ko/docs/api https://fe-developers.kakaoent.com/2022/220224-data-fetching-libs/ https://steadily-worked.tistory.com/565