FE ๊ด€์ ์—์„œ grpc ์ฐ๋จนํ•˜๊ธฐ (feat. REST api ์™€์˜ ๋น„๊ต)
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ 2023. 5. 12. 15:35

๐Ÿ’ก gRPC์™€ Rest api์˜ ์ฐจ์ด์ ์„ ์ •๋ฆฌํ•˜๊ณ  ์žฅ๋‹จ์ ์„ ํŒŒ์•…ํ•˜์—ฌ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์กฐ์‚ฌํ•˜๋‹ค๊ฐ€ ํŠน์ • ํˆด๋“ค๋งŒ gRPC๋ฅผ ์ง€์›ํ•˜๊ณ , gRPC๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ ๊ฑฐ์˜ Go, Kotiin ๊ธฐ๋ฐ˜ ์ฝ”๋“œ๋“ค ๋ฐ–์— ์—†๊ธธ๋ž˜ gRPC์™€ Rest api์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ด๊ณ  ์–ธ์ œ ๋ฌด์–ผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ / JS๋ฅผ ํ†ตํ•ด ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ์žˆ์„ ์ง€ ๊ถ๊ธˆํ•ด์„œ ์กฐ์‚ฌํ•ด ๋ด…๋‹ˆ๋‹ค. Rest api๋Š” ๊ธฐ์กด์— ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ณด์…จ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„ ์„ค๋ช… ์—†์ด ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. gRPC๋ž€? grpc๋ž€ ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(RPC) ์‹œ์Šคํ…œ์ด๋ฉฐ, ์ „์†ก์„ ์œ„ํ•ด HTTP/2 ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ ์–ธ์–ด๋กœ ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. client - server si..

[Typescript] ๊ตฌ์กฐ์  ํƒ€์ดํ•‘๊ณผ ๋• ํƒ€์ดํ•‘
์›น (WEB)/๊ณต๋ถ€ 2023. 4. 16. 19:58

๐Ÿค” ๊ธฐ์กด์— ์•Œ๊ณ  ์žˆ๋˜ Duck typing๊ณผ Typescript ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์˜ ์ฐจ์ด๋ฅผ ์ธ์ง€ํ•˜๊ณ  ํ•œ๊ณ„๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. Duck typing์ด๋ž€ “๋งŒ์•ฝ ์–ด๋–ค ์ƒˆ๊ฐ€ ์˜ค๋ฆฌ์ฒ˜๋Ÿผ ๊ฑท๊ณ , ํ—ค์—„์น˜๊ณ , ๊ฝฅ๊ฝฅ๊ฑฐ๋ฆฌ๋Š” ์†Œ๋ฆฌ๋ฅผ ๋‚ธ๋‹ค๋ฉด ๋‚˜๋Š” ๊ทธ ์ƒˆ๋ฅผ ์˜ค๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ด๋‹ค.” ๋ผ๋Š” ๋ง์—์„œ ํƒ„์ƒํ•˜์˜€์œผ๋ฉฐ, ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋Ÿฐํƒ€์ž„ ์‹œ ๊ฐ์ฒด์˜ ํ–‰์œ„์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํƒ€์ž… ์ˆ˜์šฉ์„ฑ์„ ์ฒดํฌํ•˜๋„๋ก ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. type Person = { name: string, age: number, }; const personA = { name: 'ํฌ์€', age: 27, }; const duckA = { name: '์˜ค๋ฆฌ', age: 2, }; const person: Person = duckA; // it's okay ํƒ€์ž…..