Micro Service Architecture์ด๋ž€?
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:51

๊ธฐ์กด์˜ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ์กด์˜ ์•„ํ‚คํ…์ฒ˜๋Š” Monolitic ์•„ํ‚คํ…์ฒ˜๋กœ ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ํ•˜๋‚˜์˜ ๋ฐฐํฌ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋œปํ•œ๋‹ค. ์„œ๋น„์Šค ๋ณ„๋กœ ๋‚˜๋‰˜์–ด์ ธ์žˆ์ง€ ์•Š์œผ๋ฉฐ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ ๋ฐฐํฌํ•˜๊ณ ์ž ํ•˜๋ฉด ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋‹ค์‹œ ๋ฐฐํฌ ๋œ๋‹ค. MSA ์žฅ์  ๊ฐ„๋‹จํ•˜๋‹ค. ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋‹ค. MSA ๋‹จ์  ๋นŒ๋“œ ์‹œ๊ฐ„, ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„, ๋ฐฐํฌ ์‹œ๊ฐ„์ด ๋น ๋ฅด๊ฒŒ ์ƒ์Šนํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ์ „์ฒด ์„œ๋น„์Šค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์„œ๋น„์Šค์˜ ์˜ํ–ฅ๋„๋‚˜ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํŒŒ์•…์ด ์–ด๋ ต๋‹ค. MSA ๊ตฌ์กฐ UI layer ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง layer ๋ฐ์ดํ„ฐ ์ ‘๊ทผ layer DB Micro Service Architecture MSA๋Š” ๋ฐฐํฌ ๋‹จ์œ„๋ฅผ ์„œ๋น„์Šค ๋ณ„๋กœ ์ชผ๊ฐ  ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋œปํ•œ๋‹ค. ๋น„๊ตํ•˜์ž๋ฉด ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. MSA ํŠน์ง• ๊ฐ ์„œ๋น„์Šค๋Š” mono..

Refresh Token
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:36

Refresh token์˜ ์žฅ์  ๋ณธ์ธ์€ ์›๋ž˜ API ์š”์ฒญ ์‹œ ๋งค๋ฒˆ Access Token์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ์‹์œผ๋กœ API๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ์‹œ์Šคํ…œ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Refresh Token์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค. ๋˜ํ•œ, refresh token์ด ์žˆ์„ ๊ฒฝ์šฐ access token์˜ ์œ ํšจ ์‹œ๊ฐ„์„ ์งง๊ฒŒ ํ•˜์—ฌ ํƒˆ์ทจ ์‹œ ๋น ๋ฅด๊ฒŒ ๋ฌดํšจํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. Refresh token์˜ ๋™์ž‘ Access Token์„ ํ†ตํ•ด User๊ฐ€ request๋ฅผ ๋ณด๋‚ด๊ณ , ์œ ํšจ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ ๋˜์—ˆ๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค. User๋Š” Access Token๊ณ  ํ•จ๊ป˜ Refresh Token์„ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ๋‹ค. Refresh Token์ด ์œ ํšจํ•˜๋‹ค๋ฉด ์œ ํšจ์‹œ๊ฐ„์ด ๊ฐฑ์‹ ๋œ Access Token์ด ์ƒˆ๋กœ ๋ฐœ๊ธ‰๋˜์–ด User..

Token ์ €์žฅ ์œ„์น˜
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:34

token์€ cookie์— ์ €์žฅํ•  ์ˆ˜๋„, Web Storage์— ์ €์žฅํ•  ์ˆ˜๋„, Client ์ž์ฒด์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Cookie ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ๋Œ€ 4KB๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ Credential ์†์„ฑ์œผ๋กœ ํ—ˆ์šฉํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. HTTP Request ์‹œ ์ž๋™์œผ๋กœ ํฌํ•จ๋˜์–ด ์„œ๋ฒ„์— ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ œ๊ณต ๊ฐ€๋Šฅํ•˜๋‹ค. HttpOnly ์„ค์ •์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Web Storage Session Storage ์„œ๋ฒ„์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋‘ ์‚ญ์ œ ๋œ๋‹ค. 5~10MB์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. Local Storage ์„œ๋ฒ„์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ๋ฐ˜ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. 5~10MB์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. Client Side ํด๋ผ์ด์–ธํŠธ ..

OAuth 2.0
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:32

๊ฐœ๋… ์ •๋ฆฌ ๋‚ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ Client, ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ Resource Server, ๋‘ ์„œ๋น„์Šค๋ฅผ ๋ชจ๋‘ ์ด์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ Resource Owner๋ผ๊ณ  ์ •์˜ํ•œ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ Resource Server์—์„œ ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ Authorization Server๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์—ฐํ•ฉํ•ด์„œ ์ธ์ฆ์ฒด๊ณ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ federated Identity๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ฐฐ๊ฒฝ Client๊ฐ€ Resource Server(google, facebook ๋“ฑ)์— ์žˆ๋Š” Resource Owner์˜ ๊ณ„์ •์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ? Resource Server์— ๋Œ€ํ•œ Resource Owner์˜ id, pw๋ฅผ ์ œ๊ณต๋ฐ›์œผ๋ฉด ๋” ์ข‹๊ฒ ์ง€๋งŒ ๋ณด์•ˆ ์‹ ๋ขฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ oAuth๊ฐ€ ๋‚˜์™”๋‹ค. oAuth๋ฅผ ..

React-query :: api fetch ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:38

React-query : fetch, cache, synchronize, update(for server state)์— ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๊ณต์‹์‚ฌ์ดํŠธ React Query Hooks for fetching, caching and updating asynchronous data in React react-query.tanstack.com ๋ฐฐ๊ฒฝ server state ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. caching deduping(๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ œ๊ฑฐ) update "out of date" data / know when is it reflecting updates data pagination optimization, lazy loading data memory management, garba..

React-query :: Query Invalidation
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:37

query๊ฐ€ ์˜ค๋ž˜ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํŒ๋‹จํ•˜๊ณ  ๋‹ค์‹œ fetchํ•ด์˜ฌ ๋•Œ, queryClient.invalidateQueries ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. https://react-query.tanstack.com/guides/query-invalidation Query Invalidation Query Invalidation Waiting for queries to become stale before they are fetched again doesn't always work, especially when you know for a fact that a query's data is out of date because of something the user has done. For that purpose, the Quer..

React-query :: Mutations
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:36

query์™€ ๋‹ค๋ฅด๊ฒŒ CUD์— ์‚ฌ์šฉ๋œ๋‹ค. https://react-query.tanstack.com/guides/mutations Mutations Subscribe to our newsletter The latest TanStack news, articles, and resources, sent to your inbox. react-query.tanstack.com ์‚ฌ์šฉ์˜ˆ์ œ const mutation = useMutation(newTodo => axios.post('/todos', newTodo)) return ( {mutation.isLoading ? ( 'Adding todo...' ) : ( {mutation.isError ? ( An error occurred: {mutation.error.mes..

React-query :: Query
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 10. 12:35

๊ธฐ๋ณธ ์‚ฌ์šฉ const info = useQuery('unique_key', fetchData); // fetchData๋Š” promise ๋ฐ˜ํ™˜ uniqueํ•œ key๋กœ ์ •์˜ํ•˜๋ฉฐ, key์— ๋ฌถ์ด๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ์ด๋‹ค. useQuery๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” result๋Š” ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ƒํƒœ loading isLoading์ด true๊ฐ€ ๋œ๋‹ค. error isError๊ฐ€ true๊ฐ€ ๋˜๋ฉฐ, error์— ์—๋Ÿฌ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด๋‹ค. success isSuccess๊ฐ€ true๊ฐ€ ๋˜๋ฉฐ, data์— ์ •๋ณด๊ฐ€ ๋‹ด๊ธด๋‹ค. idle ์‚ฌ์šฉ ์˜ˆ์ œ const { isLoading, isError, data, error } = useQuery('key', fetchData); // const { status, data, erro..