Go์˜ ์žฅ๋‹จ์ 

๊ทธ๊ฐ„ Go๋ฅผ ์„œ๋ฒ„ํ™˜๊ฒฝ์— ์ข€ ์จ๋ณด๋ฉด์„œ ๋А๋‚€ ์žฅ์ ๊ณผ ๋‹จ์ , ํŠน์ง•๋“ค์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.




์žฅ์ 

1. ๊ฝค ์‰ฌ์šด ๋‚œ์ด๋„์™€ ๋Ÿฌ๋‹์ปค๋ธŒ

์‹ ํƒ์Šค ์ž์ฒด๊ฐ€ ๋น„๊ต์  ๊ฐ„๊ฒฐํ•œ ํŽธ์ด๊ณ , c๋‚˜ java ์ •๋„๋งŒ ์ตํžŒ ์‚ฌ๋žŒ์ด๋ผ๋„ ๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ™๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฌผ๋ก  ๊ทธ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž˜ ์งœ๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.


2. ๋น ๋ฅธ ์ปดํŒŒ์ผ์†๋„

๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์•„์›ƒํ’‹์œผ๋กœ ๋‚˜์˜ค๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ปดํŒŒ์ผ์–ธ์–ด๋“ค๊ณผ ๋น„๊ตํ•˜๋ฉด ์ปดํŒŒ์ผ-์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅธ ํŽธ์ด๋‹ค.
python ๊ฐ™์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ ๋น„๊ฒฌํ•  ์ •๋„...๊นŒ์ง€๋Š” ์•„๋‹ˆ๊ณ , node+typescript ํ™˜๊ฒฝ๋ณด๋‹ค๋Š” ๋น ๋ฅธ๊ฒƒ๋„ ๊ฐ™๋‹ค. tsc๊ฐ€ ๋„ˆ๋ฌด ๋А๋ฆฐ ๊ฒƒ๋„ ์žˆ๋‹ค.


3. ์“ธ๋งŒํ•œ ์—์ฝ”์‹œ์Šคํ…œ

Java๋‹˜๊ฐ™์€ ๋ฉ”์ด์ €์— ๋น„๊ฒฌํ•  ์ •๋„๋Š” ์•„๋‹ˆ์ง€๋งŒ, ํ™˜๊ฒฝ์ด ๊ฝค ํ’์„ฑํ•œ ํŽธ์ด๋‹ค.
devops, ์ธํ”„๋ผ, ์ฝ”์ธ ์ชฝ ํ™˜๊ฒฝ์€ ์›”๋“ฑํ•œ ํŽธ.
์›น์„œ๋ฒ„ ์ˆ˜์ค€ ํ™˜๊ฒฝ์€ ๋ณดํ†ต. ๊ทธ ์™ธ์—๋Š” ๋”ฑํžˆ ์—†๋Š”๊ฑฐ๊ฐ™๋‹ค.
๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ๊ฐ™์€๊ฑด ํ๊ธ‰์ด๋”๋ผ.


4. ํ”„๋กœํŒŒ์ผ๋ง ํ™˜๊ฒฝ

์„ฑ๋Šฅ ์ถ”์ ์„ ์œ„ํ•œ ํ”„๋กœํŒŒ์ผ๋ง ํ™˜๊ฒฝ์ด ๊ฝค ์ž˜ ๋‚ด์žฅ๋˜์–ด์žˆ๋‹ค.
gc๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋Ÿฐํƒ€์ž„์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— cpu&๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ถ”์ ์ด ๊ฑฐ์˜ ์ž๋™์œผ๋กœ ๋œ๋‹ค.


5. ์“ธ๋งŒํ•œ ์„ฑ๋Šฅ

์‹คํ–‰์†๋„๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ ์ธก๋ฉด์—์„œ๋Š” ๋‹ค Java์— ๋ฐ€๋ฆฌ๋Š” ๊ฐ์ด ์—†์ง€์•Š์•„ ์žˆ๊ธด ํ•œ๋ฐ, ๊ทธ๋ž˜๋„ ๊ทธ๋Ÿฐ๋Œ€๋กœ ์“ธ๋งŒํ•œ ์ˆ˜์ค€์ด๋‹ค. ๋น„๋นŒ ์ˆ˜๋Š” ์žˆ๋‹ค.


6. ๊ฐ•๋ ฅํ•œ? ๋™์‹œ์„ฑ

๊ณ ๋ฃจํ‹ด์ด๋ผ๋Š” ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ ๋‹จ์œ„, ์ฑ„๋„ ๊ฐ™์€ ํŽธ๋ฆฌํ•œ ๋™๊ธฐํ™” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ด์„œ ํ†ตํ•ด ๊ฐ€๋ฒผ์šด ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ์‰ฌ์šด ํŽธ์ด๋‹ค.
๋ณต์žกํ•œ ๋™์‹œ์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ข‹๋‹ค๋Š” ๋ง์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋งŒ ์‰ฝ๋‹ค...




๋‹จ์ 

1. ๋”์ฐํ•œ ์˜ค๋ฅ˜์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ


try-catch๋„ ์•„๋‹ˆ๊ณ  ๋ชจ๋‚˜๋“œ๋„ ์•„๋‹ˆ๊ณ  ์ด๋„์ €๋„ ์•„๋‹Œ ๋ฐฉ๋ฒ•์„ ์˜ค๋ฅ˜์ฒ˜๋ฆฌ ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ํ‡ดํ–‰๋œ ๋ชจ๋‚˜๋“œ๋ผ๊ณ  ๋ด๋„ ๋œ๋‹ค.

๊ฐ’๊ณผ ์˜ค๋ฅ˜๋ฅผ ํŠœํ”Œ๋กœ ๋ฌถ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๊ฑธ ๋ฐ›์•„์„œ ํ•ธ๋“ค๋งํ•˜๋Š” ํ˜•ํƒœ๋ฅผ ์ทจํ•œ๋‹ค.

๋ชจ๋‚˜๋“œ๊ฐ€ ์ง€์›๋˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์€ ์ƒ์œ„์Šคํƒ์œผ๋กœ ์—๋Ÿฌ ์ „ํŒŒํ• ๋•Œ๋Š” ํ‚ค์›Œ๋“œ๋งŒ ํ•œ๋‘๊ฐœ ๋ถ™์ด๋ฉด ๋˜๋Š”๋ฐ, Go๋Š” ํ•ญ์ƒ ์ €๋Ÿฐ ๋…ธ๊ฐ€๋‹ค๋ฅผ ์ณ์•ผํ•œ๋‹ค.
์ฝ”ํŒŒ์ผ๋Ÿฟ ๊ฐ™์€ ๋ณด์กฐ๋„๊ตฌ๊ฐ€ ์—†์œผ๋ฉด ์ด๊ฒŒ ์ฐธ ๊ณ ๋ฌธ์ด ๋”ฐ๋กœ์—†๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ์ €๋Ÿฐ ํ˜•ํƒœ์˜ ์‹ ํƒ์Šค๋Š” ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์ œํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฒ˜๋ฆฌ๋ฅผ ๋นผ๋จน๊ณ  ์ง€๋‚˜์น˜๊ธฐ๋„ ์‰ฝ๋‹ค.


2. ์ „์—ญ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๊ถŒ์žฅ

์ „์—ญ๋ณ€์ˆ˜ ๊ธฐ๋Šฅ์ด ์ž˜ ์ง€์›๋˜๊ณ , ์ „์—ญ๋ณ€์ˆ˜์˜ ํŽธ๋ฆฌํ•œ ์‚ฌ์šฉ์„ ์œ„ํ•œ init ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋„ ์žˆ๋‹ค.
์‚ฌ์ด๋“œ์ดํŽ™ํŠธ ๋ฒ”๋ฒ…์˜ ๋”๋Ÿฌ์šด ์ฝ”๋“œ๋ฅผ ์–‘์‚ฐํ•˜๊ธฐ ์ข‹๋‹ค.


3. ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋””์ž์ธ

์ฒ˜์Œ์—๋Š” ๊ดœ์ฐฎ์•„๋ณด์ผ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ๋ง‰์ƒ ์“ฐ๋‹ค๋ณด๋ฉด ๋ญ”๊ฐ€ ์ด์ƒํ•˜๊ฑฐ๋‚˜ ๋น ์ ธ์žˆ๋Š” ๊ฒƒ๋“ค์ด ๋งŽ๋‹ค.

๋‹น์žฅ ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ๋งŒ ํ•ด๋„ ์ด ์ •๋„๋‹ค.


4. ๋ฐ˜์ชฝ์งœ๋ฆฌ ์ œ๋„ˆ๋ฆญ

๋Œ€์ถฉ ๋งŒ๋“ค์–ด๋†“๊ณ  ๋ฐฉ์น˜๋˜๊ณ  ์žˆ๋Š” ์ค‘์ด๋‹ค.
์ œ๋„ˆ๋ฆญ ๋ฐ”์šด๋“œ ์„ค์ •์—๋„ ์ œํ•œ์ด ์žˆ๊ณ , ๋ฉ”์„œ๋“œ์—๋Š” ์ œ๋„ˆ๋ฆญ์„ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค.
์ œ๋„ˆ๋ฆญ์œผ๋กœ ๋ญ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค ๋ง‰ํžŒ๋‹ค.


5. ์ปดํŒŒ์ผํƒ€์ž„ ์ฒ˜๋ฆฌ ๋งค์ปค๋‹ˆ์ฆ˜ ๋ถ€์กฑ

go์—๋Š” ์ปดํŒŒ์ผํƒ€์ž„ ์ˆ˜์ค€ ํ™•์žฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ œ๋„ˆ๋ฆญ ์™ธ์—๋Š” ์—†๋‹ค.

๊ทธ๋ž˜์„œ ๋ญ”๊ฐ€ ์ „์ฒ˜๋ฆฌ๋‚˜ ์ƒ์„ฑ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ง„์งœ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ generationํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ทจํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋Ÿฐํƒ€์ž„ ๋ฆฌํ”Œ๋ ‰์…˜์ด ๋„๋ฐฐ๋  ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ์ปดํŒŒ์ผํƒ€์ž„์— ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋ผ๋„ ๋ง์ด๋‹ค.


6. ์–ด์ •์ฉกํ•œ ๋ชจ๋“ˆ์‹œ์Šคํ…œ

go๋Š” ๊ฐ ํด๋”๊ฐ€ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ-ํŒจํ‚ค์ง€ ์˜์—ญ์„ ์ด๋ฃฌ๋‹ค. ์ด ํŒจํ‚ค์ง€๋“ค์€ ์„œ๋กœ ๋™๋“ฑํ•˜๋ฉฐ ์ƒํ•˜๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋ƒฅ ๋งŒ๋“ค๊ธฐ ํŽธํ•˜๊ณ  ๋‹จ์ˆœํ•ด์„œ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ ๊ฑฐ๊ฐ™๋‹ค.

์ข‹๋‹ค๋ฉด ์ข‹๋‹ค๊ณ  ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ๊ณ„์ธตํ˜• ๋ชจ๋“ˆ์‹œ์Šคํ…œ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— circular import์— ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ „๋ฌดํ•˜๊ณ , ๋ฌธ์ œ์ง€์ ์„ ์ฐพ๋Š” ๊ฒƒ๋„ ์—ด๋ถˆ๋‚˜๊ฒŒ ํ•ด๋†จ๋‹ค.

๊ทธ๋ž˜์„œ go๋กœ ๋œ ๋ชจ๋“ˆ๋“ค ๋ณด๋ฉด ํ•œ ํด๋”์— ์†Œ์ŠคํŒŒ์ผ์„ ์ž”๋œฉ ๋ฐ€์–ด๋„ฃ์€๊ฑธ ํ”ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค ์ด๊ฑฐ ๋•Œ๋ฌธ์ด๋‹ค.


7. ๋ฐ˜์ชฝ์งœ๋ฆฌ ํŠœํ”Œํƒ€์ž…

์ด๊ฑธ ์—ฌ๊ธฐ์„œ ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉด ์ €๊ธฐ์„œ๋„ ์ ์šฉ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๊ฑธ ๊ธฐ๋ณธ์ ์ธ ์–ธ์–ด์˜ ์ง๊ต์„ฑ์ด๋ผ๊ณ  ๋งํ•œ๋‹ค.

๊ทธ๋Ÿฐ ๋ฉด์—์„œ ํŠœํ”Œ ํƒ€์ž…์€ ์ง๊ต์„ฑ์ด ๋”์ฐํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ํƒ€์ž…์—๋Š” ํŠœํ”Œ ํƒ€์ž…์„ ์“ธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ตฌ์กฐ์ฒด ํ•„๋“œ ๊ฐ™์€ ๊ณณ์—๋Š” ํŠœํ”Œํƒ€์ž…์„ ๋„ฃ์„ ์ˆ˜ ์—†๋‹ค.

์˜ค๋ฅ˜์ฒ˜๋ฆฌ๊ฐ™์€๊ฑฐ ํ•˜๋‹ค๋ณด๋ฉด ์—ด๋ฐ›์„๋•Œ๊ฐ€ ๋งŽ๋‹ค.


8. ํŒจ๋‹‰๊ณผ ์ €๊ฐ€์šฉ์„ฑ

๋‚˜๋Š” ์ข‹์€ ์„œ๋ฒ„ํ™˜๊ฒฝ์„ ๊ฒฐ์ •์ง“๋Š” ์ฃผ์š” ์š”์†Œ๊ฐ€ ๊ฐ€์šฉ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
๊ทธ๋Ÿฐ ๋ฉด์—์„œ go๋Š” ๋”์ฐํ•œ ์ €๊ฐ€์šฉ์„ฑ ์ˆ˜์ค€ ๋ฌธ์ œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

๊ฐ€์žฅ ์—ญ๊ฒจ์šด๊ฑด concurrent map write๋‹ค.
์—ฌ๋Ÿฌ ๊ณ ๋ฃจํ‹ด์—์„œ map์— ๋™์‹œ ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๋ฉด ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•œ๋‹ค. ์‹ฌ์ง€์–ด ์ด๊ฑด recover๋„ ์•ˆ๋ผ์„œ ๋ฌด์กฐ๊ฑด ์„œ๋ฒ„๊ฐ€ ๋ป—๋Š”๋‹ค.
๊ฒŒ๋‹ค๊ฐ€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋””๋ฒ„๊ทธ ํŠธ๋ ˆ์ด์Šค๋กœ ํŒจ๋‹‰ํฌ์ธํŠธ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์–ด๋ ต๋‹ค.

๊ทธ ๋‹ค์Œ์œผ๋กœ ๊ณจ์น˜์•„ํ”ˆ๊ฑด ์ƒ์œ„์ˆ˜์ค€์—์„œ recover๋ฅผ ๊ตฌ์„ฑํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๊ณ ๋ฃจํ‹ด์—์„œ ํŒจ๋‹‰์ด ํ„ฐ์ง€๋ฉด ์‹œ์Šคํ…œ์ด ํ†ต์งธ๋กœ ํ„ฐ์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ฐ€์žฅ ์ข‹์€๊ฑด ๊ณ ๋ฃจํ‹ด์„ ๋„์šธ๋•Œ๋งˆ๋‹ค recover ๊ตฌ์„ฑ์„ ํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ํŒ€ ๊ทœ๋ชจ๊ฐ€ ํฌ๋‹ค๋ฉด ์‰ฝ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.

https://m.blog.naver.com/sssang97/223403313214


9. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ถ€์žฌ

golang์—์„œ ์ฝ”๋“œ์™€ ์‹๋ณ„์ž๋ฅผ ๋‹ค๋ฅธ ์˜์—ญ์œผ๋กœ ๊ฒฉ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ํŒจํ‚ค์ง€๋ฐ–์— ์—†๋‹ค.
๊ทผ๋ฐ ๋…ผ๋ฆฌ์  ๊ฐœ๋…์„ ๋‚˜๋ˆ„๊ฒ ๋‹ค๊ณ  ํŒจํ‚ค์ง€ ๋‹จ์œ„๋ฅผ ์ชผ๊ฐœ๋ฉด circular import๊ฐ™์€ ๊ฑฐ์ง€๊ฐ™์€ ๋ฌธ์ œ๋“ค์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‰ฝ์‚ฌ๋ฆฌ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

๊ทธ๋ž˜์„œ ์›ฌ๋งŒํ•˜๋ฉด ๋‹จ์ผํŒจํ‚ค์ง€์— ์–ต์ง€๋กœ ์‘ค์…”๋„ฃ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๊ณ , ์‹๋ณ„์ž๊ฐ€ ๊ธธ๊ณ  ๋”๋Ÿฌ์›Œ์ง€๋Š” ๊ฒƒ๋„ ์ˆœ์‹๊ฐ„์ด๋‹ค. ๊ด€๋ฆฌ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง„๋‹ค.


10. ๊ฒŒ์œผ๋ฅธ GC

Go์˜ GC๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์˜ GC์™€ ๋น„๊ตํ•ด์„œ ๊ทธ๋ฆฌ ์ข‹๋‹ค๊ณ  ํ•˜๊ธด ์–ด๋ ต๋‹ค.

๋‚ฎ์€ ์ •์ง€์‹œ๊ฐ„(latency)๊ณผ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ ์œ ์ง€๋ผ๋Š” ๋ช…๋ชฉํ•˜์— ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด, GC ์ž์ฒด๋ฅผ ๋งค์šฐ ๊ฒŒ์œผ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, GC๋กœ ์ธํ•ด ํ• ๋‹นํ•ด์ œ๊ฐ€ ๋˜๋”๋ผ๋„ ๊ทธ๊ฒŒ ๋˜ ์‹ค์ œ๋กœ ํ• ๋‹นํ•ด์ œ๋˜๋Š”๋ฐ ๋”œ๋ ˆ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์•„๋ฌดํŠผ ์ด๋Ÿฐ ๋‹จ์  ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์˜ ํ• ๋‹น/ํ•ด์ œ๊ฐ€ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ์ง‘์•ฝ์ ์ธ ๊ฒฝ์šฐ์—๋Š” Go๋ฅผ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
CPU๋‚˜ I/O ์ง‘์•ฝ์ ์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ณ ๋ คํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

GC์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณ„๋„ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
https://blog.naver.com/sssang97/223576600679




์• ๋งคํ•œ ๊ฒƒ

1. ๋‚ก์•„๋น ์ง„ ์‹ ํƒ์Šค

21์„ธ๊ธฐ์— ๋‚˜์˜จ ๊ฒƒ์ด ๋งž๋‚˜ ์‹ถ์„ ์ •๋„๋กœ ์–ธ์–ด์—์„œ ์‰ฐ๋‚ด๊ฐ€ ๋งŽ์ด ๋‚œ๋‹ค.
if-else๋‚˜ switch ๊ฐ™์€ ์ œ์–ด๋ฌธ์—์„œ ํ‘œํ˜„์‹ ํ˜•ํƒœ๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๊ณ , ํŒจํ„ด๋งค์นญ๋„ ์—†์œผ๋ฉฐ, ๋ชจ๋‚˜๋“œ๋„ ์—†๋‹ค.
์žˆ๋Š”๊ฑธ ์„ธ๋Š”๊ฒŒ ๋” ๋น ๋ฅด๋‹ค.


2. ์ž์œ ๋ถ„๋ฐฉํ•˜๊ณ  ๋А์Šจํ•œ ์‹ ํƒ์Šค

go๋Š” ์ •์ ํƒ€์ž…์–ธ์–ด์ด๋ฉด์„œ๋„ ์ข€ ๋А์Šจํ•˜๊ฑฐ๋‚˜ ์•”์‹œ์ ์ธ ๋ฌธ๋ฒ•์š”์†Œ๋ฅผ ๋ช‡๊ฐ€์ง€ ๊ฐ–๊ณ ์žˆ๋‹ค.

๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด ๊ตฌ์กฐ์ฒด ํ•„๋“œ ์ดˆ๊ธฐํ™”๋‹ค. ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑํ• ๋•Œ ํ•„๋“œ๋ฅผ ์ƒ๋žตํ•ด๋„ ๊ทธ๋ƒฅ ๊ธฐ๋ณธ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ณ  ์ž˜ ์‹คํ–‰๋œ๋‹ค.
๋ณ„๊ฑฐ ์•„๋‹Œ๊ฑฐ ๊ฐ™์ง€๋งŒ ๊ฝค ๋งŽ์€ ๋ฒ„๊ทธ์˜ ์›์ฒœ์ด ๋˜๊ณค ํ•œ๋‹ค.

๊ตฌ์กฐ์ฒด ํƒœ๊ทธ๋„ ์ข€ ์งœ์ฆ๋‚˜๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋‹ค. ๋ญ”๊ฐ€ ์‹ ํƒ์Šค์ธ๋ฐ ์‹ ํƒ์Šค๊ฐ€ ์•„๋‹Œ๊ฒƒ์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด์ง„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ˜•์‹์ด๋ผ์„œ, ํ˜•ํƒœ๊ฐ€ ์•ˆ๋งž์•„๋„ ์ปดํŒŒ์ผ์ด ์ž˜ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฒ„๊ทธ๊ฐ€ ๋œ๋‹ค.

์ด๋Ÿฐ ์ž์ž˜ํ•œ ๋ฌธ์ œ๋“ค์€ lint๋ฅผ ์“ฐ๋ฉด ํ•ด๊ฒฐ๋˜๊ธด ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ €๊ฒƒ ๋ถ™์ด๋‹ค๋ณด๋ฉด ๊ฒ๋‚˜ ๋А๋ ค์ง€๊ณ  ์ƒ์‚ฐ์„ฑ๋„ ๋–จ์–ด์ ธ์„œ go์˜ ๋น ๋ฅธ ์ปดํŒŒ์ผ์„ฑ๋Šฅ์ด ํ‡ด์ƒ‰๋˜๋Š” ๋А๋‚Œ์„ ๋งŽ์ด ๋ฐ›๋Š”๋‹ค.


3. ์œ„ํ—˜ํ•œ ๋™์‹œ์„ฑ

go๋Š” ๋™์‹œ์„ฑ ๋กœ์ง์„ ๊ฐ€๋ณ๊ฒŒ ์ž‘์„ฑํ•  ๋•Œ๋Š” ์‰ฝ์ง€๋งŒ, ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋ฉด ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ๋‚œ์žฅํŒ์ด ๋˜๊ธฐ ์‰ฝ๋‹ค.

async-await ๊ฐ™์€ ๊ทœ๊ฒฉํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—†์–ด์„œ ๊ฐ€๋…์„ฑ๋„ ํญ๋ฐœํ•˜๊ธฐ ์‰ฝ๊ณ , Rust์ฒ˜๋Ÿผ ๋™์‹œ์„ฑ ์ถฉ๋Œ์„ ์œ„ํ•œ ๋ฐฉ์–ด์  ๊ฒ€์ฆ์ด ์—†์–ด์„œ ์œ„ํ—˜ํ•œ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๊ธฐ๋„ ์‰ฝ๋‹ค.
์•Œ์•„์„œ ์ž˜ํ•ด์•ผํ•œ๋‹ค.


4. ์ˆ˜๋งŽ์€ ์œ ์‚ฌํ‚ค์›Œ๋“œ์™€ ์•”์‹œ์  ๋ฌธ๋ฒ•

golang์„ ์ถ”์•™ํ• ๋•Œ ์ž์ฃผ ๋‚˜์˜ค๋Š” ๋ ˆํผํ† ๋ฆฌ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ ์€ ํ‚ค์›Œ๋“œ์™€ ๊ฐ„๋‹จํ•œ ์‹ ํƒ์Šค์ธ ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ธ€์Ž„. ๋‚œ ํ‚ค์›Œ๋“œ๊ฐ€ ์ ๋‹ค๋Š” ๋ง์—๋Š” ๋™์˜ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.

go์—๋Š” ์ง„์งœ ํ‚ค์›Œ๋“œ๋ผ๊ณค ํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์‹ค์ƒ์˜ ํ‚ค์›Œ๋“œ์ธ ๊ธฐ๋Šฅ๋“ค์ด ์ œ๋ฒ• ๋งŽ๋‹ค. init, iota, len, append, make ๋“ฑ๋“ฑ...

go์—์„œ ํ…Œ์ŠคํŠธ์šฉ ํŒŒ์ผ์€ *_test.go์˜ ํ˜•ํƒœ๋กœ ๊ฐ•์ œ๋˜์–ด์žˆ๋‹ค. ์ € ํŒŒ์ผ๋ช…์€ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์“ธ ์ˆ˜ ์—†๋‹ค.

ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์™ธ๋ถ€ ํŒจํ‚ค์ง€์— ๊ณต๊ฐœํ• ์ง€ ๋ง์ง€๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๋ฆ„์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค.
์‹๋ณ„์ž๊ฐ€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด ํŒจํ‚ค์ง€ ์™ธ๋ถ€๋กœ export๋˜๊ณ , ์•„๋‹ˆ๋ฉด ํŒจํ‚ค์ง€ ๋‚ด์— ์ˆจ๊ฒจ์ง„๋‹ค.


5. ํ•˜์œ„ํ˜ธํ™˜์„ฑ?

go์—์„œ๋Š” 1.* ๋ฒ„์ „๋Œ€ ์ง€ํ‚ค๋ฉด์„œ ํ•˜์œ„ํ˜ธํ™˜์„ฑ์„ ์ž˜ ์ง€ํ‚จ๋‹ค๋Š” ๊ฒƒ์„ ์žฅ์ ์œผ๋กœ ๋‚ด์„ธ์šฐ๊ณค ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜์œ„ํ˜ธํ™˜์ด ์กฐ๊ธˆ์”ฉ ๊นจ์งˆ ๋•Œ๋„ ์žˆ๋‹ค.

๋‹น์žฅ ๊ทผ๋ž˜์— for loop ๋ณ€์ˆ˜ ๋™์ž‘๋„ ์ฝ”๋“œ ์ˆ˜์ค€ ํ˜ธํ™˜์„ฑ์ด 1.22์—์„ ๊ฐ€ ๊นจ์กŒ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” mockery ๊ธฐ๋ฐ˜์œผ๋กœ mocking ํ™˜๊ฒฝ์„ ์ข€ ์ผ์—ˆ๋Š”๋ฐ, ๋ฒ„์ „ ์˜ฌ๋ฆด๋•Œ๋งˆ๋‹ค ๋ญ ์‹ ๋‚˜๊ฒŒ ๊นจ์ง€๊ณ  ๋™์ž‘ ์•ˆํ•˜๊ณ  ๊ทธ๋Ÿฌ๋”๋ผ. ๊ทธ๋ž˜์„œ ๋ชป์˜ฌ๋ ธ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ์ง„์งœ ํ˜ธํ™˜์„ฑ์„ ์ง€ํ‚ค๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๋ฒ„์ „์„ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.
Ansi C์™€ Java 1.8์„ ๋ณธ๋ฐ›์œผ๋ฉด ๋œ๋‹ค.




์„œ๋ฒ„ ํ™˜๊ฒฝ์— ์ž˜ ๋งž๋Š”๊ฐ€?

๊ฐ„๋‹จํ•œ ์‹œ์Šคํ…œ์ด๋‚˜ ๊ฒฝ๋Ÿ‰ ์„œ๋ฒ„๋ฅผ ํ˜ผ์ž์„œ ๋งŒ๋“ค์–ด์„œ ๋„์šฐ๋Š” ์ •๋„๋กœ๋Š” ๊ดœ์ฐฎ๋‹ค. ๋‚ด ๋ณด๊ธฐ์— ๋”ฑ ๊ทธ ์ •๋„๊ฐ€ golang์ด ๊ฐ•์ ์„ ๋ฐœํœ˜ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๊ทผ๋ฐ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํฌํ•จ๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ํŒ€ ๋‹จ์œ„ ํ˜‘์—…์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๊ฑท์žก์„ ์ˆ˜ ์—†์–ด์ง„๋‹ค.
๋”์ฐํ•œ ์ €๊ฐ€์šฉ์„ฑ๊ณผ ์–ด์ •์ฉกํ•œ ์‹ ํƒ์Šค์—์„œ ์œ ๋„๋œ ์ˆ˜๋งŽ์€ ๋ฒ„๊ทธ๋“ค์ด ์†์ถœํ•œ๋‹ค.
์ด๋Ÿด๋•Œ๋Š” ์ž๋ฐ”๊ฐ€ ํ›จ์”ฌ ๋‚ซ๋‹ค. ๊ด€๋ฆฌ๋ฉด์—์„œ๋„, ์„ฑ๋Šฅ์—์„œ๋„.