πŸ“š Computer Science/CS

[혼자 κ³΅λΆ€ν•˜λŠ” λ„€νŠΈμ›Œν¬] 7μž₯. λ„€νŠΈμ›Œν¬ 심화

ibelieveinme 2025. 3. 23. 22:09
728x90

이 글은 γ€Œν˜Όμž κ³΅λΆ€ν•˜λŠ” λ„€νŠΈμ›Œν¬γ€ μ±… λ‚΄μš©μ„ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

μ €μž‘κΆŒ λ¬Έμ œμ‹œ μ‚­μ œν•˜κ² μŠ΅λ‹ˆλ‹€.


 

1. μ•ˆμ •μ μΈ μ„œλΉ„μŠ€λ₯Ό μœ„ν•œ 기술

 

* μ•ˆμ •μ„±: νŠΉμ • κΈ°λŠ₯을 μ–Έμ œλ“  κ· μΌν•œ μ„±λŠ₯으둜 μˆ˜ν–‰ν•  수 μžˆλŠ” νŠΉμ„±

* κ°€μš©μ„±: μ•ˆμ •μ„±μ˜ 정도λ₯Ό 수치둜 λ‚˜νƒ€λ‚Έ 정도. 컴퓨터 μ‹œμŠ€ν…œμ΄ νŠΉμ • κΈ°λŠ₯을 μ‹€μ œλ‘œ μˆ˜ν–‰ν•  수 μžˆλŠ” μ‹œκ°„μ˜ λΉ„μœ¨. 전체 μ‚¬μš© μ‹œκ°„ 쀑에 정상적인 μ‚¬μš© μ‹œκ°„.

κ°€μš©μ„± = μ—…νƒ€μž„ / (μ—…νƒ€μž„ + λ‹€μš΄νƒ€μž„)

 

* κ³ κ°€μš©μ„±(High Availability): 99.999% 파이브 λ‚˜μΈμŠ€. λ‹€μš΄νƒ€μž„μ΄ 1년에 5.26λΆ„, 1κ°œμ›” 26.3초.

 

=> λ‹€μš΄νƒ€μž„μ΄ λ°œμƒν•˜λŠ” 원인을 λͺ¨λ‘ μ°Ύμ•„ μ›μ²œμ μœΌλ‘œ μ°¨λ‹¨ν•˜κΈ°λŠ” 어렡기에, λ¬Έμ œκ°€ λ°œμƒν•˜λ”λΌλ„ 계속 κΈ°λŠ₯ν•  수 μžˆλŠ” λŠ₯λ ₯인 '결함감내'κ°€ μ€‘μš”ν•˜λ‹€.

 

1) 이쀑화: μ‹œμŠ€ν…œ 전체가 쀑단될 수 μžˆλŠ” λŒ€μƒ(단일 μž₯애점 Single Point Of Failure)을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ˜ˆλΉ„(λ°±μ—…)을 λ‘λŠ” 기술.

- active-stanby: ν•œ μ‹œμŠ€ν…œμ€ κ°€λ™ν•˜κ³ , λ‹€λ₯Έ μ‹œμŠ€ν…œμ€ λ°±μ—… μš©λ„λ‘œ λŒ€κΈ° μƒνƒœλ‘œ λ‘λŠ” 이쀑화 ꡬ성 방식.

                         ν•˜λ‚˜μ˜ μž₯λΉ„λ₯Ό μ‚¬μš©ν•  λ•Œμ— λΉ„ν•΄ μ„±λŠ₯μƒμ˜ 큰 λ³€ν™”λ₯Ό κΈ°λŒ€ν•˜κΈ°λŠ” μ–΄λ ΅λ‹€. 

- active-active: 두 μ‹œμŠ€ν…œ λͺ¨λ‘ 가동 μƒνƒœλ‘œ λ‘λŠ” ꡬ성 방식.

                        μˆœκ°„μ μœΌλ‘œ λ‹€λ₯Έ μ‹œμŠ€ν…œμ— λΆ€ν•˜κ°€ 급증할 수 있고 이둜 인해 좔가적인 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€.

 

=> 3개 이상 '닀쀑화' λ°©μ‹μœΌλ‘œ μž₯λΉ„λ₯Ό κ΅¬μ„±ν•˜λ©΄ λ”μš± μ•ˆμ •μ μΈ 운영이 κ°€λŠ₯ν•˜λ‹€.

 

ex) 티밍(teaming) - Window μ—μ„œ 주둜 μ‚¬μš©, λ³Έλ”©(bonding) - Linux μ—μ„œ 주둜 μ‚¬μš©.

: μ—¬λŸ¬ 개의 λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€(NIC) λ₯Ό 이쀑화/λ‹€μ€‘ν™”ν•˜μ—¬ 마치 더 λ›°μ–΄λ‚˜κ³  μ•ˆμ •μ μΈ μ„±λŠ₯을 λ³΄μœ ν•œ ν•˜λ‚˜μ˜ μΈν„°νŽ˜μ΄μŠ€μ²˜λŸΌ 보이게 ν•˜λŠ” 기술.

 

2) λ‘œλ“œ λ°ΈλŸ°μ‹±

: λ‘œλ“œ λ°ΈλŸ°μ„œμ— μ˜ν•΄ νŠΈλž˜ν”½μ„ κ³ λ₯΄κ²Œ λΆ„λ°°ν•˜λŠ” 기술. (μ„œλ²„ μƒνƒœλ₯Ό κ²€μ‚¬ν•˜λŠ” ν—¬μŠ€ 체크 κΈ°λŠ₯도 ν•œλ‹€.)

ex) λ‘œλ“œ λ°ΈλŸ°μ„œ κΈ°λŠ₯이 μžˆλŠ” μž₯μΉ˜λ“€: L4 μŠ€μœ„μΉ˜, L7 μŠ€μœ„μΉ˜

ex) λ‘œλ“œ λ°ΈλŸ°μ„œ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ“€: HaProxy, Envoy, Nginx.

 

이쀑화/λ‹€μ€‘ν™”λœ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ 사이에 μœ„μΉ˜ν•˜μ—¬ 각 μ„œλ²„μ— κ· λ“±ν•˜κ²Œ λΆ„λ°°ν•˜λŠ” 역할을 ν•œλ‹€.

 

* λ‘œλ“œ λ°ΈλŸ°μ‹± μ•Œκ³ λ¦¬μ¦˜

- λΌμš΄λ“œ 둜빈 μ•Œκ³ λ¦¬μ¦˜: λ‹¨μˆœνžˆ μ„œλ²„λ₯Ό λŒμ•„κ°€λ©° λΆ€ν•˜λ₯Ό μ „λ‹¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

- μ΅œμ†Œ μ—°κ²° μ•Œκ³ λ¦¬μ¦˜: 연결이 적은 μ„œλ²„λΆ€ν„° μš°μ„ μ μœΌλ‘œ λΆ€ν•˜λ₯Ό μ „λ‹¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

- λ¬΄μž‘μœ„ μ•Œκ³ λ¦¬μ¦˜

- 응닡 μ‹œκ°„μ΄ κ°€μž₯ 짧은 μ„œλ²„λ₯Ό μ„ νƒν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

λ“±

 

=> λΌμš΄λ“œ 둜빈 μ•Œκ³ λ¦¬μ¦˜, μ΅œμ†Œ μ—°κ²° μ•Œκ³ λ¦¬μ¦˜μ—λŠ” 'κ°€μ€‘μΉ˜'λ₯Ό λΆ€μ—¬ν•  수 μžˆλ‹€. μ„œλ²„ κ°„ μ„±λŠ₯이 λ‹€λ₯Έ 경우 κ°€μ€‘μΉ˜λ₯Ό μ‚¬μš©ν•΄μ„œ λ‘œλ“œ λ°ΈλŸ°μ‹±μ„ μ‘°μ ˆν•œλ‹€.

 

 

cf. ν¬μ›Œλ“œ ν”„λ‘μ‹œμ™€ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ μ‚¬μ΄μ—λŠ” μˆ˜λ§Žμ€ μ„œλ²„λ“€μ΄ μ‘΄μž¬ν•œλ‹€.

=> ν΄λΌμ΄μ–ΈνŠΈμ™€ μ˜€λ¦¬μ§„ μ„œλ²„(Origin Server) 사이에 μˆ˜λ§Žμ€ 쀑간 μ„œλ²„κ°€ μ‘΄μž¬ν•œλ‹€.

 

HTTP 쀑간 μ„œλ²„ μœ ν˜•μœΌλ‘œ ν”„λ‘μ‹œ(Proxy)와 κ²Œμ΄νŠΈμ›¨μ΄(Gateway)κ°€ μžˆλ‹€.

 

- ν”„λ‘μ‹œ(Proxy): ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„ νƒν•œ λ©”μ‹œμ§€ 전달 λŒ€λ¦¬μž.

- κ²Œμ΄νŠΈμ›¨μ΄(Gateway): μ•„μ›ƒλ°”μš΄λ“œ 연결에 λŒ€ν•΄ μ˜€λ¦¬μ§€ μ„œλ²„ μ—­ν• , λ‹€λ₯Έ μΈλ°”μš΄λ“œ μ„œλ²„λ‘œ μ „λ‹¬ν•˜λŠ” μ€‘κ°œμž 역할을 ν•œλ‹€.

 

=> ν”„λ‘μ‹œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ κ°€κΉκ²Œ μžˆλŠ” 쀑간 μ„œλ²„μ΄κ³ , κ²Œμ΄νŠΈμ›¨μ΄λŠ” μ˜€λ¦¬μ§„ μ„œλ²„μ™€ κ°€κΉκ²Œ μžˆλŠ” 쀑간 μ„œλ²„ 이닀.

 

 

 

2. μ•ˆμ •μ μΈ 톡신을 μœ„ν•œ 기술

 

1) λŒ€μΉ­ ν‚€ μ•”ν˜Έν™” 방식: μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”μ— λ™μΌν•œ ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” 방식

=> ν‚€κ°€ 유좜되면 큰 λ¬Έμ œκ°€ λ°œμƒν•˜λ―€λ‘œ ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „λ‹¬ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€. ν•˜μ§€λ§Œ, ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ 전달할 κ²ƒμ΄μ—ˆμœΌλ©΄ λ©”μ„Έμ§€λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „λ‹¬ν•˜λŠ” 게 λ‚˜μœΌλ―€λ‘œ 쒋은 방식은 μ•„λ‹ˆλ‹€.

=> ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „μ†‘ν•˜κΈ°λŠ” μ–΄λ ΅μ§€λ§Œ λΆ€ν•˜κ°€ μ μ–΄μ„œ μ•”ν˜Έν™”/λ³΅ν˜Έν™”λ₯Ό λΉ λ₯΄κ²Œ μˆ˜ν–‰ν•  수 μžˆλ‹€.

 

2) 곡개 ν‚€ μ•”ν˜Έν™” 방식: μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”μ— μ„œλ‘œ λ‹€λ₯Έ ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” 방식. κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”, κ°œμΈν‚€λ‘œ λ³΅ν˜Έν™”.

=> μ•”ν˜Έν™”/λ³΅ν˜Έν™”μ— μ‹œκ°„κ³Ό λΆ€ν•˜κ°€ μƒλŒ€μ μœΌλ‘œ 많이 λ“€μ§€λ§Œ ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ κ³΅μœ ν•  수 μžˆλ‹€.

 

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ λ¬Έμžμ—΄μ„ μ „μ†‘ν•˜κ³ μž ν•  λ•Œ,

μ„œλ²„μ—κ²Œ κ³΅κ°œν‚€λ₯Ό μš”μ²­ν•œλ‹€. -> μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ κ³΅κ°œν‚€λ₯Ό μ€€λ‹€. -> μ„œλ²„μ˜ 곡개 ν‚€λ‘œ λ©”μ‹œμ§€λ₯Ό μ•”ν˜Έν™”ν•΄μ„œ μ„œλ²„μ— μ „λ‹¬ν•œλ‹€. -> μ„œλ²„λŠ” μžμ‹ μ˜ κ°œμΈν‚€λ‘œ λ©”μ‹œμ§€λ₯Ό λ³΅ν˜Έν™”ν•˜μ—¬ ν™•μΈν•œλ‹€.

 

3) μ„Έμ…˜ ν‚€: λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식과 κ³΅κ°œν‚€ μ•”ν˜Έν™” λ°©μ‹μ˜ μž₯λ‹¨μ μœΌλ‘œ 인해 두 방식을 ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 방식을 μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.

=> 곡캐 ν‚€λ‘œ λŒ€μΉ­ ν‚€λ₯Ό μ•”ν˜Έν™”ν•˜κ³ , 개인 ν‚€λ‘œ μ•”ν˜Έν™”λœ λŒ€μΉ­ ν‚€λ₯Ό λ³΅ν˜Έν™” ν•˜λŠ” 방식.

 

 

4) μΈμ¦μ„œμ™€ λ””μ§€ν„Έ μ„œλͺ…

 

* κ³΅κ°œν‚€ μΈμ¦μ„œ(Public key certificate)

: 곡개 킀와 곡개 ν‚€μ˜ μœ νš¨μ„±μ„ μž…μ¦ν•˜κΈ° μœ„ν•œ μ „μž λ¬Έμ„œ.

μΈμ¦μ„œλŠ” 인증기관(CA; Certification Authority)μ΄λΌλŠ” 제 3의 κΈ°κ΄€μ—μ„œ λ°œκΈ‰ν•œλ‹€.

 

μΈμ¦μ„œμ—λŠ” 이 곡개 ν‚€κ°€ μ§„μ§œλΌλŠ” 보증을 ν•˜λŠ” 'μ„œλͺ…κ°’(signature)'이 μžˆλ‹€.

μ„œλͺ… 값은 μΈμ¦μ„œ λ‚΄μš©μ— λŒ€ν•œ ν•΄μ‹œ 값을 CA의 개인 ν‚€λ‘œ μ•”ν˜Έν™”ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ§Œλ“€μ–΄μ§„λ‹€.

 

* κ³΅κ°œν‚€ μΈμ¦μ„œ 검증

μ›Ή λΈŒλΌμš°μ €λ₯Ό 톡해 μ„œλ²„λ‘œλΆ€ν„° μ„œλͺ… 값이 뢙은 μΈμ¦μ„œλ₯Ό μ „λ‹¬λ°›μ•˜μ„ λ•Œ,

μΈμ¦μ„œ 검증을 μœ„ν•΄ μ„œλͺ… κ°’κ³Ό μΈμ¦μ„œλ₯Ό λΆ„λ¦¬ν•΄μ„œ 비ꡐ κ²€μ¦ν•œλ‹€.

 

μ„œλͺ…값을 CA의 κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™” ν•œλ‹€. -> μΈμ¦μ„œ λ‚΄μš©μ— λŒ€ν•œ ν•΄μ‹œ 값을 μ–»λŠ”λ‹€.

μΈμ¦μ„œ 데이터에 λŒ€ν•œ ν•΄μ‹œ 값을 직접 κ΅¬ν•œλ‹€.

 

=> μ„œλͺ…값을 CA의 κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™”ν•˜μ—¬ 얻은 ν•΄μ‹œκ°’κ³Ό μΈμ¦μ„œ λ°μ΄ν„°μ˜ ν•΄μ‹œκ°’μ„ 직접 κ΅¬ν•œ 값이 μΌμΉ˜ν•˜λŠ” μ§€ λΉ„κ΅ν•˜μ—¬ κ²€μ¦ν•œλ‹€.

 

5) HHTPS: SSLκ³Ό TLS

μ•”ν˜Έν™” 방식과 κ³΅κ°œν‚€ μΈμ¦μ„œλ₯Ό 기반으둜 λ™μž‘ν•˜λŠ” ν”„λ‘œν† μ½œ. SSL(Secure Sockets Layer)κ³Ό TLS(Transfport Layer Security)

 

SSLκ³Ό TLS λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€ν‘œμ μΈ ν”„λ‘œν† μ½œ = HTTPS(HTTP over TLS)

 

* HTTPS κ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€

β‘  TCP 쓰리 웨이 ν•Έλ“œμ…°μ΄ν¬: TCP 연결을 μœ„ν•΄ 두 ν˜ΈμŠ€νŠΈκ°€ SYN, SYN+ACK, ACK ν”Œλž˜κ·Έκ°€ μ„€μ •λœ TCP μ„Έκ·Έλ¨ΌνŠΈλ₯Ό μ£Όκ³  λ°›λŠ”λ‹€.

β‘‘ TLS ν•Έλ“œμ…°μ΄ν¬: μ•”ν˜Έν™” 톡신을 μœ„ν•œ ν‚€λ₯Ό κ΅ν™˜ν•œλ‹€. μ‚¬μš©κ°€λŠ₯ν•œ μ•”ν˜Έν™” 방식과 ν•΄μ‹œν•¨μˆ˜λ₯Ό 담은 정보인 μ•”ν˜Έ μŠ€μœ„νŠΈλ₯Ό μ „λ‹¬ν•œλ‹€.

        μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜  ν•΄μ‹œν•¨μˆ˜

TLS_AES_128_GCM_SHA256

TLS_AES_256_GCM_SHA384

TLS_CHACHA20_POLY1305_SHA256

...

β‘’ μ•”ν˜Έν™”λœ λ©”μ‹œμ§€ μ†‘μˆ˜μ‹ 

 

 

728x90