์š”์ฆ˜ ๋– ์˜ค๋ฅด๋Š” gRPC ํ†บ์•„๋ณด๊ธฐ

gRPC๋Š” ์™œ ์‹ค์šฉ์ ์ผ๊นŒ? ์ด ๊ธ€์€ gRPC๋ฅผ ์ ‘ํ•œ ์ง€ ์–ผ๋งˆ ์•ˆ ๋๊ฑฐ๋‚˜ ์ƒˆ๋กญ๊ฒŒ ์•Œ์•„๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์„ ๋Œ€์ƒ์œผ๋กœ go, gRPC ๊ทธ๋ฆฌ๊ณ  MSA ํ™˜๊ฒฝ์—์„œ์˜ ์‹ค๋ฌด ๊ฒฝํ—˜์„ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” gRPC๋Š” ์ธํ”„๋ผ ๊ตฌ์ถ•์— ์žˆ์–ด ๋‹ค์†Œ ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์žˆ๋Š” ํŽธ์ด์ง€๋งŒ ๊ต‰์žฅํžˆ ์‹ค์šฉ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”. ๋จผ์ €, gRPC๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? gRPC๋Š” ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. gRPC๋Š” Protocol Buffer๋ฅผ IDL(Interface Definition Language)๋กœ ์‚ฌ์šฉํ•˜๋Š” HTTP/2๊ธฐ๋ฐ˜์˜ RPC ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ƒ์†Œํ•œ ๋‹จ์–ด๋“ค์ด ๋งŽ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ์š”! ์ž ๊น ๋ช‡ ๊ฐ€์ง€ ์‚ดํŽด๋ณผ๊นŒ์š”? RPC(Remote Procedure Call) RPC๋Š” ๋ง ๊ทธ๋Œ€..

BackEnd 2022. 12. 4. 18:39
Go : ๊ณ ๋ฃจํ‹ด(goroutine), ์ฑ„๋„(channels)

๊ฐœ์š” ๊ณ ๋ฃจํ‹ด(goroutine)๊ณผ ์ฑ„๋„(channel)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž ๊ณ ๋ฃจํ‹ด(goroutine) ๊ณ ๋ฃจํ‹ด์€ Go๋Ÿฐํƒ€์ž„์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ๊ฐ€์ƒ ์“ฐ๋ ˆ๋“œ์ด๋‹ค. ๊ฐ€์ƒ ์“ฐ๋ ˆ๋“œ๋ผ๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ OS๋ ˆ๋ฒจ์—์„œ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Go)๋ ˆ๋ฒจ์—์„œ ๊ฐ€์ƒ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋‹ˆ ์ฃผ์˜ํ•˜์ž ๋Ÿฐํƒ€์ž„์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— main ๋Ÿฐํƒ€์ž„์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ๊ณ ๋ฃจํ‹ด์ด ์ข…๋ฃŒ๋˜๋‹ˆ ์ฃผ์˜ํ•˜์ž go ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ณ ๋ฃจํ‹ด์„ ์„ ์–ธํ•œ๋‹ค ๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ๊ณ ๋ฃจํ‹ด์˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž import ( "fmt" "time" ) func main() { // go ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ณ ๋ฃจํ‹ด ์ƒ์„ฑ -> ๋™์‹œ์— ์‹คํ–‰๋จ. ์ „์ฒด ์ถœ๋ ฅ์„ ๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด์ž go bar("foo") bar("bar") /..

Go 2022. 3. 20. 15:27
Go ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

๊ฐœ์š” go ์–ธ์–ด ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž ๋‹ค์Œ ๋ชฉ์ฐจ๋กœ ์ง„ํ–‰๋˜๋ฉฐ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฝํ—˜ํ•ด๋ณธ ์‚ฌ๋žŒ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค ๊ฐœ์š” ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ์„ ์–ธ(+์ถ•์•ฝํ˜• ์„ ์–ธ) ํƒ€์ž… ํ•จ์ˆ˜ ์„ ์–ธ(ignore value(_), defer, export function) ์กฐ๊ฑด๋ฌธ(if, switch) ๋ฐ˜๋ณต๋ฌธ(for) pointer(*) ๋ฐฐ์—ด(slice, array) ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ์„ ์–ธ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์ˆ˜๋Š” const, ๋ณ€์ˆ˜๋Š” var ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์„ ์–ธํ•œ๋‹ค ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ์„ ์–ธ๋„ ๊ฐ€๋Šฅํ•œ๋ฐ, ์ด๋Š” ์•„๋ž˜ ์ฝ”๋“œ๋กœ ์‚ดํŽด๋ณด์ž // ๊ธฐ๋ณธ ์„ ์–ธ var age = 23 var name string name = "mokhs" // ๋ณ€์ˆ˜ ์ถ•์•ฝํ˜• ์„ ์–ธ : ์•„๋ž˜์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž role := "Backend Engineer" // ์ƒ์ˆ˜ ์„ ์–ธ ..

Go 2022. 3. 18. 23:33