์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Kotlin
- 2024-08-21
- ์ด๋ ธํ ์ด์
- di
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- ์ฝ๋์
- ํ๋ IT&E
- menutab
- Factory Method Pattern
- http method
- Python
- AndroidStudio
- ์ฑ์ฉํ์ ํ
- fontstyle
- FACTORY
- Dialog
- datepicker
- udp
- URN
- OOP
- swagger
- reflection
- 2024-08-20
- tcp
- IOC
- uri
- ๊ธฐ์ด100์
- OpenAPI
- url
- Android Studio
dingdong coding
SERVER_NETWORK ๋ณธ๋ฌธ
1. ํธ๋ํฝ์ด ๋ง์์ง๋ฉด ์ด๋ป๊ฒ ๋๋์ง, ์ด๋ป๊ฒ ๋์ฒํด์ผ ํ๋์ง ์ค๋ช ํด์ฃผ์ธ์ ( ์์ธก๋๋ ํ์ ๋ฐ ํด๊ฒฐ ๋ฐฉํฅ)
๋์ฉ๋ ํธ๋ํฝ์ด ๋ฐ์ํ๋ฉด ์๋ฒ๊ฐ ๋ ์ด ๊ฑธ๋ฆด์๋ ์๊ณ ๋ง์ฝ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค๋ฒ๊ฐ ๋๋ค๋ฉด out of memory๋ฑ์ ์๋ฌ๋ฅผ ๋ด๋ฑ์ผ๋ฉด์ ์๋ฒ๊ฐ ๋ป๊ฒ ๋ ์๋ ์์ต๋๋ค. ๋๋ฌธ์ ๋ ๋ง์ ์ฌ์ฉ์๋ฅผ ์์ฉํ๊ธฐ ์ํด์๋ ์๋ฒ ๋ฆฌ์์ค๋ฅผ ๋๋ ค์ผ ํฉ๋๋ค.
1) scale-up (์์ง ํ์ฅ)
๊ธฐ์กด ํ ๋์ ์๋ฒ ์ฑ๋ฅ์ ๋์ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด ๋ฐฉ๋ฒ์ ์ผ์์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง ๋ ๋ง์ด ์ฌ์ฉ์๋ค์ด ์๊ธด๋ค๋ฉด ์ถ๊ฐ ๋ ๋ฆฌ์์ค ๋ํ ๊ณ ๊ฐ๋ฉ๋๋ค. ๊ฒฐ๊ตญ ํ ๋์ ์๋ฒ์ฑ๋ฅ์ ๋์ด๋ ๋ฐฉ์์ ๋ฆฌ์์ค ํ๊ณ, ์ฑ๋ฅ ํ์ฅ์ ํ๊ณ๊ฐ ์์ต๋๋ค. ๋ํ ๋จ์ผ ์ฅ์ ์ง์ ์ ๊ฐ๊ฒ ๋ฉ๋๋ค. ํ ๋์ ์๋ฒ๊ฐ ๋ค์ด ๋๋ ๊ฒฝ์ฐ ๋ ์ด์ ์๋ฒ๋ฅผ ์ ๊ณตํ ์ ์๊ฒ ๋ฉ๋๋ค.
2) scale-out (์ํ ํ์ฅ)
๋์ผํ ๋ชฉ์ ์ ๊ฐ๋ ์๋ฒ๋ฅผ ์ฌ๋ฌ ๋ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ํ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋ฒ๊ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ ์ง์์ ์ธ ์ํํ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. (+ ์๋ฒ๊ฐ ์ฌ๋ฌ ๋์ธ ๊ฒฝ์ฐ ํธ๋ํฝ์ ๋ถ๋ฐฐํ ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉ )
2. ์น์๋ฒ(Web Server)์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(Web Application Server)์ ์ฐจ์ด์ ๋ํ์ ์ธ ์์์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
์น์๋ฒ๋ ์ ์ ์ธ ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ธ๋ ์ฃผ๋ก ๋์ ์ธ ์ปจํ ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๊ณ ์์ต๋๋ค.
์น์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ ์ ์ธ ์ปจํ ์ธ ๋ฅผ HTTP๋ฅผ ํตํด ์ ๊ณตํด์ฃผ๋ ์๋ฒ๋ก ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ค์ด์จ ์์ฒญ์ ๋ํด ์ฌ์ฉ์ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์์ฒญํ ํ์ผ์ด ์๊ฑฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํน์ ํ ์ฝ๋ ๊ฐ์ ์ ๋ฌํด์ค๋๋ค. (ex. 404)
์น์๋ฒ์ ์ข ๋ฅ : NGINX, APACHE ๋ฑ
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์น์๋ฒ๋ก๋ถํฐ ์ค๋ ๋์ ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ๋ผ๊ณ ํฉ๋๋ค. ์น์๋ฒ + ์ปจํ ์ด๋๋ก ์ด๋ฃจ์ด์ง ์๋ฒ๋ก ํ๋ก๊ทธ๋จ ์คํํ๊ฒฝ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์ ์ ๊ด๋ฆฌ, ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํฉ๋๋ค.
์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์ข ๋ฅ : Tomcat, JEUS, Jetty, Resin ๋ฑ
• ์ ์ ์ธ
๋ง๋ค์ด ๋์ ๊ทธ๋๋ก ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ๋ค๋ฅธ ์ปดํจํฐ ํน์ ํด๋ผ์ด์ธํธ์์ ์ ์ํด๋ ํญ์ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ
ex) HTML ํ ํ๋ฆฟ
• ๋์ ์ธ
์ํธ์์ฉ์ ํตํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ก ๋ํ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ
์๋ฒ๊ฐ ์ฌ์ฉ์์ ์์ฒญ(Request)์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณต์ฒ๋ฆฌํ ๋ค์ ์์ฑ๋์ด์ง ์น ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ
3. Serverless์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
์๋ฒ๋ฆฌ์ค๋ ํด๋ผ์ฐ๋ ์ปดํจํ ๋ชจ๋ธ ์ค ํ๋๋ก ์ฌ์ฉ์๊ฐ ์๋ฒ๋ฅผ ์ง์ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ๋ชจ๋ธ์ ์๋ฏธํฉ๋๋ค.
์ฌ๊ธฐ์ ์๋ฒ๋ฅผ ์ง์ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค๋ ์๋ฏธ๋ laaS((Infrastructure-as-a-service))์ ๊ฐ์ ๋ชจ๋ธ์ฒ๋ผ ํธ๋ํฝ์ ๋ฐ๋ผ ์ฌ์ฉ์๊ฐ ์ง์ ์๋ฒ์ ๊ฐ์ฉ๋์ ์ฆ/๊ฐ ์ํฌ ํ์๊ฐ ์๋ค๋ ๋ป์ ๋๋ค.
์๋ฒ๋ฆฌ์ค๋ ๋์ ์ผ๋ก ์๋ฒ์ ์์์ ํ ๋นํฉ๋๋ค. ๋ํ ๋๊ธฐ ์ํ๋ฅผ ์ ์ธํ ์ค์ ์ฌ์ฉ์์์ ๋ํด์๋ง ์ฒญ๊ตฌ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ๊ฒฝ์ฌ์ ์ด๋ฉฐ ์ด ์๋ฒ๋ ํด๋ผ์ฐ๋ ์ ๊ณต ๊ธฐ์ ์์ ์ ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๋ ์ค์ผ์ผ๋ง, ์ ๋ฐ์ดํธ, ๋ณด์ ๋ฑ ์๋ฒ์ ๋ํด ์ผ์ ๊ด๋ฆฌํ๊ฑฐ๋ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ด์ง๋๋ค. ์ฆ, ๊ธฐ์กด ํด๋ผ์ฐ๋ ์ปดํจํ ๋ชจ๋ธ์ ๋นํด ๊ฒฝ์ ์ ์ด๊ณ ๊ฐ์ฉ์ฑ์ด ์ข์ ๋ชจ๋ธ์ ๋๋ค.
4. 3-Way Handshake์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
3-way-handshake๋ TCP/IP ํ๋กํ ์ฝ์ ์ด์ฉํด์ ํต์ ์ ํ๋ ์์ฉํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ ์ ์ ํํ ์ ์ก์ ๋ณด์ฅํ๊ธฐ ์ํด ์๋๋ฐฉ ์ปดํจํฐ์ ์ฌ์ ์ ์ธ์ ์ ์๋ฆฝํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ฆ ์ ๋ขฐ์ฑ ์๋ ์ฐ๊ฒฐ์ ๋งบ์ด ์ค๋๋ค.
1 ) ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ ์์ ์์ฒญํ๋ SYN ํจํท์ ๋ณด๋ธ๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๋ SYN ์ ๋ณด๋ด๊ณ SYN/ACK ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ SYN_SENT ์ํ, B์๋ฒ๋ Wait for Client ์ํ์ด๋ค.
2 ) ์๋ฒ๋ SYN์์ฒญ์ ๋ฐ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ์ ์๋ฝํ๋ค๋ ACK ์ SYN flag ๊ฐ ์ค์ ๋ ํจํท์ ๋ฐ์กํ๊ณ
ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ACK์ผ๋ก ์๋ตํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค. ์ด๋ ์๋ฒ๋ SYN_RECEIVED ์ํ๊ฐ ๋๋ค.
3 ) ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ACK์ ๋ณด๋ด๊ณ ์ดํ๋ก๋ถํฐ๋ ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ง๊ณ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๊ฒ ๋๋๊ฒ์ด๋ค.
5. API๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์
API๋ Application Programming Interface์ ์ฝ์๋ก ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ์ํธ์์ฉ์ ํ ์ ์๋๋ก ์์ฒญ, ๋ช ๋ น, ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค์ ๋๋ค. ์ฆ, ์ ์ ๋ฐ ํ๋กํ ์ฝ ์งํฉ์ ์ฌ์ฉํ์ฌ ๋ ์ํํธ์จ์ด ๊ตฌ์ฑ์์๊ฐ ์๋ก ํต์ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋งค์ปค๋์ฆ์ ๋๋ค. ( ํ๋ก๊ทธ๋จ๊ณผ ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ด์ด์ฃผ๋ ์ผ์ข ์ ๋ค๋ฆฌ์ญํ )
• ๋ ๊ตฌ์ฒด์ ์ธ ์ค๋ช
API๋? ๋น๊ฐ๋ฐ์๊ฐ ์๊ธฐ ์ฝ๊ฒ ์ค๋ช ํด๋๋ฆฝ๋๋ค!
6. HTTP ๋ฉ์๋์ ๊ฐ๊ฐ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
์ฃผ์ ๋ฉ์๋ 5๊ฐ์ง
- GET : ๋ฆฌ์์ค ์กฐํ
- POST : ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฐ์ดํฐ ๋ฑ๋ก์ ์ฌ์ฉ
- PUT : ๋ฆฌ์์ค๋ฅผ ๋์ฒด, ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ
- PATCH : ๋ฆฌ์์ค๋ฅผ ์ผ๋ถ๋ง ๋ณ๊ฒฝ
- DELETE : ๋ฆฌ์์ค ์ญ์
๊ธฐํ ๋ฉ์๋ 4๊ฐ์ง
- HEAD: GET๊ณผ ๋์ผํ์ง๋ง ๋ฉ์์ง ๋ถ๋ถ์ ์ ์ธํ๊ณ , ์ํ ์ค๊ณผ ํค๋๋ง ๋ฐํ
- OPTIONS: ๋์ ๋ฆฌ์์ค์ ๋ํ ํต์ ๊ฐ๋ฅ ์ต์ ์ ์ค๋ช (์ฃผ๋ก CORS์์ ์ฌ์ฉ)
- CONNECT: ๋์ ์์์ผ๋ก ์๋ณ๋๋ ์๋ฒ์ ๋ํ ํฐ๋์ ์ค์
- TRACE: ๋์ ๋ฆฌ์์ค์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ์ํ
7. ๋ฉ์ธ์ง ํ์ ๋ํด ์ค๋ช ํ๊ณ , ์๊ณ ์๋ ๋ฉ์ธ์ง ํ๋ฅผ ์๊ธฐํด์ฃผ์ธ์
๋ฉ์ธ์ง ํ๋ ํ๋ก์ธ์ค ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ๋ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด (MOM, Message Oriented Middlewawre)๋ฅผ ๊ตฌํํ ์์คํ ์ ์๋ฏธํฉ๋๋ค. ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด๋ ๋น๋๊ธฐ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ ๊ฒ์ ์๋ฏธํ๋๋ค. ์ฌ๊ธฐ์ ๋ฉ์์ง๋ ์์ฒญ, ์๋ด, ์ค๋ฅ ๋ฉ์์ง ํน์ ๋จ์ํ ์ ๋ณด ๋ฑ์ ์์ ๋ฐ์ดํฐ๊ฐ ๋ ์ ์์ต๋๋ค.
๋ฉ์์ง ํ๋ฅผ ์ฌ์ฉํ๋ฉด์์ฐ๋ ๋ฉ์์ง๋ฅผ ํ์ ๋ฃ์ด๋๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ค์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ ์์ฐ์ ์๋น์ค์ ์๋น์ ์๋น์ค์ ๋ ๋ฆฝ์ ์ผ๋ก ํ๋ํ๊ฒ ๋จ์ผ๋ก์จ ์๋น์ค๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๊ณ ํ์ฅ์ฑ์ด ์ข์ต๋๋ค.
๋ฉ์ธ์ง ํ์ ์ข ๋ฅ์๋ Kafka, RabbitMQ, ActiveMQ(JMS) ๋ฑ์ด ์์ต๋๋ค.
** ๊ณ์ ์ถ๊ฐ **
'๐์ทจ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
PROGRAMMING (0) | 2022.07.03 |
---|---|
JAVA_Spring (0) | 2022.07.03 |