๐Ÿ‘ ํ’€์Šคํƒ ์ด์ •๋ฆฌ

KHWยท2021๋…„ 9์›” 5์ผ
0

๋‹ค์–‘ํ•œ ์ง€์‹์Œ“๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
28/48

1. OS

ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์‹คํ–‰ํ•˜๋Š” main program

์‘์šฉํ”„๋กœ๊ทธ๋žจ - ์šด์˜์ฒด์ œ - ํ•˜๋“œ์›จ์–ด


2. ์ปค๋งจ๋“œ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค (CLI) <=> GUI

์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋‹ค์‹œ ํ…์ŠคํŠธ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง„ ์ปดํ“จํŒ… ์ธํ„ฐํŽ˜์ด์Šค

  • ์…ธ(Shell)์ด๋ž€?

    ์ปค๋งจ๋“œ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„๋œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœ๊ทธ๋žจ


3. ๋นŒ๋“œ

์ปดํŒŒ์ผ + ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ค€๋น„์˜ ๋ชจ๋“  ๊ณผ์ •


4. Process

์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ (๋ฉ”๋ชจ๋ฆฌ ์œ„์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋‹ค. )


5. thread

ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„

  • ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๊ณฐํ”Œ๋ ˆ์ด์–ด์—์„œ ๋™์˜์ƒ์„ ํ‹€์–ด๋†“์œผ๋ฉด์„œ ์†Œ๋ฆฌ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ํ™”๋ฉด ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฐ๊ฐ์˜ ๊ณฐํ”Œ๋ ˆ์ด์–ด ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ ์Šค๋ ˆ๋“œ๋“ค์ด ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ 
    ์ด๋Ÿฐ ๊ณฐํ”Œ๋ ˆ์ด์–ด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ slack๋„ ๊ฐ™์ด ์“ฐ๊ณ  intellij๋„ ์“ฐ๋Š” ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ์ƒ๊ฐ

6. git / github

๋ฒ„์ „๊ด€๋ฆฌ ํˆด / ์›๊ฒฉ ์ €์žฅ์†Œ

  • git flow

    master / hotfix / release / develop / Feature(๋ธŒ๋žœ์น˜1) / Feature(๋ธŒ๋žœ์น˜2) ..๋“ฑ


7. ๋„คํŠธ์›Œํฌ

  • client : ์ •๋ณด๋ฅผ ์š”๊ตฌํ•˜๋Š” ์ฃผ์ฒด
  • ์„œ๋ฒ„ : ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ฃผ์ฒด

IP ์ฃผ์†Œ / MAC ์ฃผ์†Œ

  • IP์ฃผ์†Œ : IPv4 ์ฒด๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ 12๊ฐœ์˜ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค
  • MAC์ฃผ์†Œ : ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ ํ†ต์‹ ๊ธฐ๊ธฐ์˜ ์‹๋ณ„๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ
  • ์ฐจ์ด์  : IP์ฃผ์†Œ๋Š” ์ž„์‹œ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ฃผ์ฒด์— ์˜ํ•ด ํ• ๋‹น ๋˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, MAC ์ฃผ์†Œ๋Š” ํ†ต์‹ ๊ธฐ๊ธฐ์˜ ํ•˜๋“œ์›จ์–ด ์ž์ฒด์— ๋ถ€์—ฌ๋œ ๊ณ ์œ ํ•œ ์‹๋ณ„๋ฒˆํ˜ธ

8. ๋„คํŠธ์›Œํฌ ์š”์ฒญ๋ฐฉ๋ฒ•

1) ๊ฐ€์žฅ ๊ฐ„๋‹จํžˆ

Client์˜ OS๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ OS์— ๊ฐ€์„œ ํ•ด๋‹น ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.

2) ๊ฐ„๋‹จํžˆ

Client์˜ IP์š”์ฒญ์ „์— DNS์„œ๋ฒ„์— ํ•ด๋‹น Domain Name(www.naver.com)์„ ํ†ตํ•ด ๋ฐ›์•„์˜จ IP์ฃผ์†Œ(192.168.1.0)๋ฅผ ํ•ด๋‹น ์„œ๋ฒ„์˜ OS๋กœ ๋ณด๋‚ด ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.

3) ์–ด๋ ต๊ฒŒ

Client์˜ IP์š”์ฒญ์ „์— DNS์„œ๋ฒ„์— ํ•ด๋‹น Domain Name(www.naver.com)์„ ํ†ตํ•ด ๋ฐ›์•„์˜จ IP์ฃผ์†Œ(192.168.1.0)๋ฅผ ํ•ด๋‹น ์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ๋กœ ๋ณด๋‚ธ ํ›„
MAC ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ํ•˜๊ณ (ARP ์š”์ฒญ)
์ด๋ฅผ ํ†ตํ•ด ์ง€์ •๋œ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„ ์ปดํ“จํ„ฐ๋Š” MAC ์ฃผ์†Œ๋ฅผ ์‘๋‹ตํ•˜์—ฌ (ARP ์‘๋‹ต)
์ถœ๋ฐœ์ง€์—์„œ๋Š” MAC ์ฃผ์†Œ๋ฅผ ์–ป๊ณ 
3-way-handshake๋ฅผ ํ†ตํ•ด ์†Œ์ผ“์„ ์—ด๊ณ  ์„œ๋ฒ„๋Š” ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

4) ์ •๋ฆฌ

  1. url(DN)์„ ํ•ด์„
  2. url์„ ๋ธŒ๋ผ์šฐ์ €์บ์‹œ , hosts ํŒŒ์ผ์—๋„ ์—†๋Š” ๊ฒƒ์ด๋ฉด DNS์„œ๋ฒ„๋กœ ์š”์ฒญํ•ด IP์ฃผ์†Œ ๋ฐ˜ํ™˜
  3. IP์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•œ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†ก
  4. ARP๋ฅผ ํ†ตํ•ด IP์ฃผ์†Œ(์„œ์šธ์‹œ ์ข…๋กœ๊ตฌ...)๋ฅผ MAC(๋ถ์œ„ 38๋„ ๋™๊ฒฝ 128๋„...)์œผ๋กœ ๋ฐ”๊พผ ํ›„ Client์— ๋ฐ˜ํ™˜
  5. socket์„ ์—ด๊ธฐ์œ„ํ•œ 3-way handshake
  6. ์„œ๋ฒ„์˜ ์‘๋‹ต ๋ฐ˜ํ™˜ => ์‘๋‹ต์‹œ request์— ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋ถ™์—ฌ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ๋“ค์–ด, network ๋ถ€๋ถ„์˜ request๊ฐ€
    user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)๋ผ๋ฉด ์ปดํ“จํ„ฐ์ด๋ฏ€๋กœ ๊ทธ๊ฒƒ์— ๋”ฐ๋ฅด๋Š” www.naver.com์˜ SSR ๋‚ด์šฉ์ด ์‘๋‹ตํ•˜๊ณ 
    user-agent: Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4))๋ผ๋ฉด ํฐ์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ๊ทธ๊ฒƒ์— ๋”ฐ๋ฅด๋Š” www.mnaver.com์˜ SSR ๋‚ด์šฉ์ด ์‘๋‹ต๋œ๋‹ค.

IP์™€ MAC์„ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ์šฉ๋„๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ
IP ์ฃผ์†Œ๋Š” Network layer์—์„œ, MAC ์ฃผ์†Œ๋Š” Data Link ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ
์ฆ‰, ์„œ๋กœ๋‹ค๋ฅธ ๋…๋ฆฝ์  ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค.

ํ˜„์‹ค์—์„œ๋Š” MAC์ฃผ์†Œ์ธ ๋ถ์œ„ ๋™๊ฒฝ์œผ๋กœ ๋ชจ๋“ ๊ฒƒ์ด ๋‚˜ํƒ€๋‚ด๋ฉด ์—ฐ๊ด€์„ฑ์ด ์—†๊ธฐ์— ๋” ํ˜ผ๋™๋˜๋ฏ€๋กœ ์ด๋ฅผ IP์ฃผ์†Œ๊ฐ€ ์žˆ์–ด ๋” ํŽธํ•˜๊ฒŒ ๋ฐฐ๋‹ฌ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋งŒํผ MAC ์ฃผ์†Œ๋„ ํ•„์š”ํ•˜์ง€๋งŒ IP์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ ์ด์œ ๋กœ ํ•„์š”ํ•œ ์ด์œ ์ด๋‹ค.


9. ๋„๋ฉ”์ธ ์ด๋ฆ„

Url์—๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„(www)๊ณผ ๋„๋ฉ”์ธ ์ด๋ฆ„(github.co.kr)์ด ์žˆ๋Š”๋ฐ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ IP์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด DNS ์„œ๋ฒ„์ด๊ณ 
ํ•ด๋‹น ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ๊ณณ์— ์žˆ์–ด์„œ ๋งŒ์•ฝ ํ•ด๋‹น ๋„๋ฉ”์ธ ์ด๋ฆ„์ด DNS ์„œ๋ฒ„์— ์—†์œผ๋ฉด ๋‹ค๋ฅธ DNS ์„œ๋ฒ„๋กœ ์ฐพ๋Š”๋‹ค. (DNS๋Š” ์ „ ์„ธ๊ณ„์— ํฉ์–ด์ ธ์žˆ๊ณ  ๋ชจ๋‘ ์—ฐ๊ฒฐ)


10. ๋ฐฉํ™”๋ฒฝ

๋ณด์•ˆ์„ ์œ„ํ•ด Network ํ†ต์‹  ์ œํ•œ ํ–‰์œ„


11. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํ”„๋ ˆ์ž„์›Œํฌ

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ๋น„ํœ˜๋ฐœ์„ฑ ์ž์›์˜ ๋ชจ์ž„
  • ํ”„๋ ˆ์ž„์›Œํฌ : ๊ฐ„๋‹จํžˆ ๋ผˆ๋Œ€, ๊ณจ์กฐ, ํ”„๋ ˆ์ž„์›Œํฌ
  • ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋˜๋ ค๋ฉด?
    ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์ด ์žˆ์–ด์•ผํ•œ๋‹ค.

๋ฆฌ์•กํŠธ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ? / ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ?

๋ฆฌ์•กํŠธ์—์„œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ถ”๊ฐ€์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค
(react-router, react-redux, react-saga ๋“ฑ....)

  • React๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ถ„๋ฅ˜๋˜์ง€ ์•Š๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถ„๋ฅ˜

12. API

Program๋ผ๋ฆฌ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋งค๊ฐœ์ฒด

Client <-> API <-> ์ ‘๊ทผํ•œ ํ”„๋กœ๊ทธ๋žจ(DB)


13. API ์„œ๋ฒ„

์›น ๋˜๋Š” ์•ฑ์—๊ฒŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์„œ๋ฒ„

API ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ?

์›น ๋˜๋Š” ์•ฑ์—์„œ ์ง์ ‘ DB์— ์ ‘๊ทผํ•˜๋ ค๊ณ ํ•˜๋ฉด ํšŒ์‚ฌ์˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๊ทธ ์‚ฌ์ด์— API์„œ๋ฒ„๋ฅผ ๋‘์–ด DB๋Š” ์บก์Šํ™”ํ•˜์—ฌ
์›น์•ฑ๊ณผ DB์„œ๋ฒ„๊ฐ„์˜ ์ค‘๊ฐ„์—ญํ• ์„ ํ•œ๋‹ค.


14. ์•ฑ / ์›น

์›น์— ๋น„ํ•ด ์•ฑ์˜ ๊ฒฝ์šฐ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ํŽ˜์ด์ง€(์›น๋ทฐ : ์•ฑ๋‚ด์—์„œ ์›น์„ ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• )๊ฐ€ ์žˆ์–ด์„œ API๋งŒ ์š”์ฒญ์„ ํ•˜๋ฉด ๋œ๋‹ค.
=> ์•ฑ์ด ์—…๋กœ๋“œ ์‹œ๊ฐ„์ด ๋” ์ ๊ฒŒ ๊ฑธ๋ฆฐ๋‹ค.


15. ์ผ๋ฐ˜ ์›น์‚ฌ์ดํŠธ / ๋ชจ๋ฐ”์ผ ์›น์‚ฌ์ดํŠธ

๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ์›น์‚ฌ์ดํŠธ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ๋งํฌ๋กœ ๊ฑธ์–ด๋†“๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
์ผ๋ฐ˜ ์›น์‚ฌ์ดํŠธ : naver.com
๋ชจ๋ฐ”์ผ ์›น์‚ฌ์ดํŠธ : m.naver.com


16. ์„œ๋ฒ„

  1. DB์„œ๋ฒ„
  2. API์„œ๋ฒ„
  3. ์Šคํ† ๋ฆฌ์ง€์„œ๋ฒ„

17. CI / CD

CI CD ๋™์ž‘์›๋ฆฌ

  1. code
  2. build
  3. test
  4. release : ๊ฐ™์€ ์ œํ’ˆ์„ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ
  5. deploy : ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์„ ์„œ๋ฒ„์™€ ๊ฐ™์€ ๊ธฐ๊ธฐ์— ์„ค์น˜ํ•˜์—ฌ ์„œ๋น„์Šค ๋“ฑ์„ ์ œ๊ณต

CI (continuous integration)

main repo์— ๋ฒ„๊ทธ ์ˆ˜์ •์ด๋‚˜ ์ฝ”๋“œ๋“ค์ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋กœ๋“œ ๋˜๋Š” ๊ฒƒ

  • ์ดํ›„ CI Server์—์„œ build์™€ test๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋˜๋„๋ก ์ž๋™ํ™” ํ•œ๋‹ค.
    test๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ ํ•ด๋‹น merge ๋Œ€์ƒ์—๊ฒŒ ์–ธ๊ธ‰

  • ์žฅ์  : ์ฝ”๋“œ ํ€„๋ฆฌํ‹ฐ ํ–ฅ์ƒ / ๋ฒ„๊ทธ ์ˆ˜์ • ์šฉ์ด

CD (continuous delivery)

๋ฐฐํฌ ์ „ ์ง์ ‘ ๊ฐœ๋ฐœํŒ€์ด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๊ฒ€์ฆ์„ ํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ (์ˆ˜๋™์ )

CD (continuous development)

๋ฐฐํฌ ์ „ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ (์ž๋™์ )

CI / CD ํˆด

  1. Jenkins
  2. Github action
  3. Buildkite
  4. Gitlab CI/CD

18. +a

๊ฐ์ฒด์ง€ํ–ฅ ์ดํ•ด
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
์•„ํ‚คํ…์ฒ˜ ์ดํ•ด
ํฌํŠธํด๋ฆฌ์˜ค๋Š” ์ œ๋Œ€๋กœ ๋œ ํ•œ๋†ˆ๋งŒ ๋งŒ๋“ค์ž -> ํ‰๊ฐ€์ž๋Š” ์ผ์ผํžˆ ์ „๋ถ€ ๋ณผ ์‹œ๊ฐ„์ด ์—†๋‹ค

์ถœ์ฒ˜

ํ”„๋ ˆ์ž„์›Œํฌ์™€-๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌReact๋Š”-๋ญ์•ผ

FE+BE ์ž…๋ฌธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฑ™๊ฒจ๊ฐ€์•ผํ•  ์ง€์‹ ํ‚คํŠธ ๊ทธ๋žฉ(์ดํ˜ธ์—ฐ)

profile
๋‚˜์˜ ํ•˜๋ฃจ๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ธฐ์–ตํ•˜๊ณ  ์ฆ๊ธฐ๊ณ  ํ›„ํšŒํ•˜์ง€๋ง์ž

0๊ฐœ์˜ ๋Œ“๊ธ€