week 6 leekyunghee - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
Nginx์ Apache์ค ์ด๋ค๊ฑธ ์ ํํ ๊ฒ์ธ๊ฐ?
์ฐ์ ๋ง๋ค์ด์ผ ํ๋ ์๋น์ค(์์คํ )์ ํน์ฑ์ ๋ํด์ ๋์ดํด ๋ณด๊ฒ ์ต๋๋ค.
- ์๋น์ค์ ์ฌ์ฉ์
- ๋ถํน์ ๋ค์์ ์ผ๋ฐ์ธ์ ๋์์ผ๋ก ํ๋ ์๋น์ค
- ์ฌ์ฉ์๊ฐ ๊ฐ์๊ธฐ ์ฆ๊ฐํ ์ ์์ผ๋ฏ๋ก scalability ๋ฅผ ๊ณ ๋ คํด์ผ ํจ.
- ์๋น์ค ์ ๊ณต ๋ฐฉ์
- ์น ๋ธ๋ผ์ฐ์ ์ ๋ชจ๋ฐ์ผ App์ ํตํ UI์ ๊ณต
- UI์์(Client) Http ํ๋กํ ์ฝ์ ์ด์ฉํ RESTful ๋ฐฉ์์ผ๋ก ์๋น์ค๋ฅผ ์์ฒญํจ.
- ๊ฐ๋ฐ ์ธ์ด
- ๋นจ๋ฆฌ ๊ฐ๋ฐํ ์ ์๋๊ฐ?์ ์ธก๋ฉด์์๋ ์๋์ ์ด๊ฒ ์ง๋ง, ๊ฐ๋ฐ ์กฐ์ง์๊ฒ ๊ฐ์ฅ ์ต์ํ๊ณ ์ปค๋ฎค๋ํฐ๊ฐ ํ์ฑํ ๋์ด ์๋ Java๋ฅผ ์ ํํ๊ณ WAS(Servlet container)๋ฅผ ์ฌ์ฉํด์ผ ํจ
- ์ธํ๋ผ ํ๊ฒฝ
- Amazon AWS์ EC2 ๋ Google AppEngine์ ๊ณ ๋ คํ๊ณ ์์.
- ๊ฐ์ฉํ ์ ์๋ resource๊ฐ ํ์กฑํ์ง ์๊ณ ์ ํ์ ์
์์ ๊ฐ์ ํน์ฑ์ ๊ธฐ์ค์ผ๋ก ์น์๋ฒ ์ ํ์ ์ค์ํ ์กฐ๊ฑด๋ค์ ๋์ดํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์ฑ(Load Balancing)์ ์ง์ํด์ผ ํจ.
- Micro Services Concept ์ ์ ์ฐํ๊ฒ ์ง์ํ ์ ์์ด์ผ ํ๋ฉฐ, ํจํด์ ์ํ URL Redirect, Virtual ๊ธฐ๋ฅ๋ฑ์ ์ง์ํด์ผ ํจ
- WAS ์ ์ฐ๊ณ๊ฐ ๊ฐ๋ฅํด์ผ ํจ.(Tomcat ๋ฑ์ Servlet Container ์์ bridge ์ ๊ณต)
- Static Resource serving์ด ๊ฐ๋ฅํด์ผ ํ์ง๋ง ์ฃผ ์ฌ์ฉ๋ชฉ์ ์ WAS๋ก์ bridge ๋ฐ load balancer ๊ธฐ๋ฅ ์ ๊ณต์
- ๋ถํน์ ๋ค์์ ์ฌ์ฉ์๊ฐ ๋์์ด๋ฏ๋ก ๋ณด์(Http Authentication) ๋ฐ SSL ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ผ ํจ
- ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์๋น์ค ๋๋ฏ๋ก System Resource๋ฅผ ์ต๋ํ ์ ๊ฒ ์ฌ์ฉํด์ผ ํจ
์น ์๋ฒ๋ฅผ ์ ์คํ๊ฒ ์ ํํ๋ ๊ฒ์ด ์ค์ํ ์ด์
- Apache์ Nginx๋ ํจ๊ป ์ธํฐ๋ท ํธ๋ํฝ์ 50 % ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ธ๊ณ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ง ์คํ ์์ค ์น ์๋ฒ๊ฐ ๋ฉ๋๋ค.
- ์ด๋ค ๊ธฐ์ ์ ์ ํํ๋ ๋ชฉํ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ๊ฐ๋ ฅํ ์๋ฒ๋ฅผ ์ ํํ๋ฉด ์ฌ์ดํธ์ ๊ธฐ๋ฅ๊ณผ ์๋์ ๊ธ์ ์ ์ธ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
Apache์ Nginx ์๊ฐ
Apache
- ํ์ฌ HTTP ํ์ค์ ์ค์ํ๋๋ก ๊ตฌ์ถ ๋ ์คํ ์์ค, ๊ณ ์ฑ๋ฅ์ ์์ ํ ์น ์๋ฒ์ ๋๋ค.
- ๊ฑฐ์ ๋ชจ๋ OS์์ ์คํ ๋๋ฉฐ ๋ค๋ฅธ ์ ๋ช ํ ์ํํธ์จ์ด ํ๋ก์ ํธ์์ ํ๋ฅญํ ๋ฌธ์ํ ๋ฐ ํตํฉ ์ง์์ ์ด์ ์ด ์์ต๋๋ค.
Apache์ ๋ ๋ค๋ฅธ ์ฃผ์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฉํฐ ์ค๋ ๋ ๋ฐฉ์์ ๋ฐ๋ฆ
- ์น ์๋ฒ ์์ฒด ๋ด์์ ๋์ ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌ
- ๋ชจ๋์ ๋์ ์ผ๋ก๋ก๋ ๋ฐ ์ธ๋ก๋ (๋ ์ ์ฐํ๊ฒ ๋ง๋ค๊ธฐ)
- ์ฒ์๋ถํฐ ์น ์๋ฒ๋ก ์ค๊ณ๋จ
Apache์ ๋จ์
์น ํธ๋ํฝ์ด ๋ง์์ง๋ฉด Apache๊ฐ ์ฌ๋ฌ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌ ํ ์ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค.
- ์ด๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ค์ค ์ค๋ ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ฅด๊ณ ๊ฐ ์ค๋ ๋๋ ํ ๋ฒ์ ํ๋์ ์ฐ๊ฒฐ ๋ง ์ฒ๋ฆฌ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Nginx
Nginx๋ ์ต์ ์น ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋๋ก ์ค๊ณ๋ ์น ์๋ฒ ํ๋ซํผ ์ ๋๋ค .
- ์ด ์น ์ฌ์ดํธ๋ ์ฑ์ฅํ๋ ์น์ ์๊ตฌ ์ฌํญ ์ธ 1 ๋ง ๊ฐ์ ์ฐ๊ฒฐ ์ ์ ๊ณต ํด์ผ ํ๋ ๋ฌธ์ ์ ๋ํ ํด๋ต์ผ๋ก ์ค๊ณ
- ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ง์ ์์ ์ฌ์ฉ์์๊ฒ ๋์์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค.
- ํจ์จ์ฑ์ ์ค์ ์ ๋๊ณ ์์ผ๋ฉฐ ๊ฒฝ๋ ์ํคํ ์ฒ์ ๋์ ๋์์ฑ์ด ์์ต๋๋ค.
Nginx์ ์ฃผ์ ์ด์ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ด๋ฒคํธ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์์ฒญ ์ ๊ณต
- ์ ํ๋ ํ๋์จ์ด ๋ฆฌ์์ค๋ก๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋์์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ
- ๋จ์ผ ์ค๋ ๋๋ฅผ ํตํด ์ฌ๋ฌ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌ ํ ์ ์์ต๋๋ค
- ์ต์ํ์ ๋ฆฌ์์ค๋ก ์น ์๋ฒ์ ์ํคํ ์ฒ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ๋ฆฝํ HTTP ์๋ฒ๋ก ๋ฐฐ์น ๊ฐ๋ฅ
Nginx ๋จ์
Nginx์ ์ฃผ์ ๋จ์ ์ ๋์ ์ปจํ ์ธ ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฒ๋ฆฌ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋์ ์ฝํ ์ธ ์ ๋ํ PHP ๋ฐ ๊ธฐํ ์์ฒญ์ ์ฒ๋ฆฌ ํ๋ ค๋ฉด Nginx๊ฐ ์ด๋ฅผ ์คํํ๊ธฐ ์ํด ์ธ๋ถ ํ๋ก์ธ์๋ก ์ ๋ฌํ๊ณ
๋ ๋๋ง ๋ ์ฝํ ์ธ ๊ฐ ๋ค์ ์ ์ก ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค (ํ๋ก์ธ์ค ์๋ ์ ํ).
Nginx๊ฐ ์ธ๋ถ์ ์์ฒญ์ ๋ฐ์ ๋ท๋จ ์๋ฒ๋ก ์์ฒญ์ ์ ๋ฌํ๋ ํ์๋ฅผ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ผ๊ณ ํฉ๋๋ค.
Apache ๋ฐ Nginx ์๋ฒ์ ์ฅ๋จ์
- ํน์ ์น ์ฌ์ดํธ์ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํค๋ ์น ์๋ฒ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์
- ์๋ฅผ ๋ค์ด Apache๋ ๊ธฐ๋ฅ์ด ํ๋ถํ ์ต์ ์ด์ง๋ง Nginx๋ ๋ฐ์ด๋ ๋ฆฌ์์ค ํจ์จ์ฑ์ ์ ๊ณต
- Nginx ์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋น๋๊ธฐ Event Driven ์ ์ํ Non Blocking ์ฒ๋ฆฌ๋ฅผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
- ๋์ ์ ์์๊ฐ ๋์ด๋ ์๋ก ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฆ๊ฐํ๋ ํ๋ก์ธ์ค ๊ธฐ๋ฐ์ apache ์๋ฒ ์ ๋นํด ์๋น ๋ฉ๋ชจ๋ฆฌ ๋์ด ์ ์ด์ง๋ฉด์ ๋์ ์ฒ๋ฆฌ ์๋ฅผ ๊ธ๊ฒฉํ๊ฒ ๋๋ฆด ์ ์์ต๋๋ค.
- ๋ํ single Thread ๊ธฐ๋ฐ์ผ๋ก ๋ง์คํฐ / worker ํ๋ก์ธ์ค ๊ตฌ๋ ๋ฐฉ์์ ์ฑํํ์ฌ context switching ๋ฅผ ํ์ง ์๊ธฐ ๋๋ฌธ์ CPU ์ฌ์ฉ๋ฅ ์ ๊ฐ์์ํฌ ์ ์์ต๋๋ค.
- ๋ค๋ง ๊ฒฐ๊ตญ ํ๋์จ์ด ์์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฏ๋ก nginx ์์ ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ์์ฃผ ์ผ์ด๋๋ค๋ฉด ์ํ์น๊ฐ ๋ ์ข์ ์๋ ์์ต๋๋ค.
- ํ์ง๋ง ๋๋ถ๋ถ์ ์น ์๋ฒ์์๋ ํ๋์จ์ด ์ฝ๊ธฐ๊ฐ ๋ฐ์ํ์ง ์๋ ์บ์ ์ ๊ณต, ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ, ๋ก๋ ๋ฒจ๋ฐ์ ๋ฑ์ ์ญํ ์ ์ฃผ๋ก ๋ด๋นํ๊ฒ ๋๋ฏ๋ก ์ต๊ทผ๋ค์ด ๋ ์์ฃผ ์ฌ์ฉ๋๋ค๊ณ ์๊ฐํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- ๊ทธ ์ธ์๋ nginx ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ชจ๋ ๋จ์๋ก ๊ฐ๋ฐํ์ฌ nginx ๋ฅผ ์ปดํ์ผํ ๋ ํ์ํ ๋ชจ๋๋ค๋ง ์กฐํฉํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์น ์ฌ์ดํธ์ ์ ํฉํ ์๋ฒ ์ ํ์ ์ ํํ๋ ๋ฐฉ๋ฒ
๋๋ถ๋ถ์ ์ง์ญ์์ ์ด ๋ ์๋ฒ๋ ์๋ก ์ ๊ฒฝ์ํฉ๋๋ค. ์ฌ์ ํ, ๊ทธ๋ค์ ๋๋ ทํ ๊ฐ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- Apache์๋ ๋ค์ํ ๋์ ๋ชจ๋์ ๋ก๋ ํ๊ธฐ ์ํ ๋ ๋ง์ ๋ฌธ์์ ๋ ๋์ ์ง์์ด ์ ๊ณต๋๋ ๋ฐ๋ฉด Nginx๋ ํธ๋ํฝ์ด ๋ง์ ์น ์ฌ์ดํธ๋ฅผ ์ํ ๋ง์ ์ ์ ์ปจํ ์ธ ๋ฐ ๋ฏธ๋์ด ์คํธ๋ฆผ์ ์ ๊ณต ํ ์ ์์ต๋๋ค.
- ๊ณต์ ํธ์คํ ์ ์ฌ์ฉํ๋ ๋ง์ ์น ๊ฐ๋ฐ์ ๋ Apache์ ํธ๋ฆฌํจ์ ์ ํธํฉ๋๋ค. ๋ฐ๋ฉด Nginx๋ ์ฃผ๋ก VPS ํธ์คํ ๋ฐ ์ ์ฉ ํธ์คํ ์ ์ฌ์ฉ๋ฉ๋๋ค.
๊ณ ๋ คํด์ผ ํ ๋ ๋ค๋ฅธ ์ต์ ์ Apache์ Nginx๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
Nginx๋ Apache ์์ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ๋ฐฐ์น ํ ์ ์์ต๋๋ค. ์ด๋ Nginx์ ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋๋ฅผ ํ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค. PHP ํ์ผ๊ณผ ๊ฐ์ ๋์ ์ปจํ ์ธ ์ ๊ฒฝ์ฐ Nginx๋ ์์ฒญ์ Apache๋ก ํ๋ก์ ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ ๋๋ง ๋ ํ์ด์ง๋ฅผ ๋ฆฌํด ํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ ์ ์ฝํ ์ธ ๊ฐ ๋ง์ ํธ๋ํฝ์ด ๋ง์ ์น ์ฌ์ดํธ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ Nginx๊ฐ ํ๋ช ํ ์ต์ ์ด ๋ ์ ์๋ค๋ ๊ฒ ์ ๋๋ค. ๋๋ ์ง์ ์ปค๋ฎค๋ํฐ์ ์ปค๋ฎค๋ํฐ๊ฐ ์ ๊ณตํ๋ ํ๋ถํ ์์์ ์์คํ ์๊ฐํ๋ ๊ฒฝ์ฐ Apache๊ฐ ํธ๋ฆฌํ ์ ํ ์ ๋๋ค.
Nginx์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ ์ํฉ์์ ์ํ์น ๋ณด๋ค ์กฐ๊ธ ๋ ๋ง์ ์ปค๋ฅ์ ์ ์ฒ๋ฆฌ ํ๋๋ฐ ๊ทธ ์ด์ ๋?
- ์ํ์น์ ๊ฒฝ์ฐ ์ปค๋ฅ์ ๋น ํ๋์ ์ค๋ ๋์ ํ๋ก์ธ์ค๋ฅผ ์์ฑ
- Nginx์ ๊ฒฝ์ฐ listener ๊ฐ request๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ request ๋ง๋ค ์ค๋ ๋์ ํ๋ก์ธ์ค๊ฐ ๋ณต์ ๋์ง ์๋๋ค.
- ์ด ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ธ ์ธก๋ฉด์์ Nginx๋ System Resource๋ฅผ ์ ๊ฒ ์ฒ๋ฆฌํ๋ค๋ ์ฅ์ ์ด ์๋ค.
- NetFlix๋ฅผ ๋น๋กฏํ ๋๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ง์ ์๋น์ค๋ค์ด Apache์์ Nginx๋ก ์ฎ๊ฒจ๊ฐ๊ณ ์๋ ์ถ์ธ์ด๊ธฐ๋ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Apche์ Nginx๋ ์ ๊ทธ๋ ๊ฒ ์ฑ๋ฅ์ ์ฐจ์ด๊ฐ ๋ ๊น์?
Apache๋ ๊ณผ๊ฑฐ Java Servlet์ด ๋์ค์ ์ด์ง ์์ ๋น์์ ์น ๊ธฐ๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ ์๋ ๊ฑฐ์ ์ ์ผํ ๋์์ด์์ต๋๋ค.
๋ฐ๋ก CGI๋ฅผ ์ด์ฉํ๋ ๊ฒ์ธ๋ฐ, ์ด๋๋ ๋ง์ ์น ์๋น์ค๋ค์ด C๋ Perl๋ก ๋ง๋ค์ด์ ธ ์๋ CGI๋ฅผ ์ด์ฉํด์ ์๋น์ค๋ฅผ ์ ๊ณต ํ์์ต๋๋ค.
์ด๋ฌ๋ค ๋ณด๋ processe-base(fork ๋ฐฉ์)๋ก ๊ฐ๋ฐํ ์ ๋ฐ์ ์์๊ณ ์๋์ ์ผ๋ก NginX๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋น์คํ๊ธฐ ์ํ ๋ชฉ์ ๋ณด๋ค Http Proxy์ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ ๋์๊ธฐ ๋๋ฌธ์ event-base(๋น๋๊ธฐ ๋ฐฉ์์ ์์ฒญ ์ ๋ฌ)๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ๋์ด ๋์ ์ฌ์ฉ์์ ๋ํ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ๋ ์ข์ ์ ์๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ค์ ๋ก Nginx๋ FCGI, SCGI ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง CGI๋ ISAPI๋ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ฆ, WAS๋ฅผ ๋น๋กฏํ Web Application์ ๋ณ๋๋ก ๊ฐ์ ธ๊ฐ์ง ์๊ณ (Tier๋ฅผ ๋ถ๋ฆฌํ์ง ์๊ณ ) CGI๋ฅผ ํตํ lightํ ์น์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ์ ํ๋ค๋ฉด Apache๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ณ๋ค. Web Server๋ฅผ Http Proxy๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด Nginx๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์ง ํ๋ค๋ ์๊ฐ์ ๋๋ค.
ํ์ค ์ ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ๋์ ์ ์ฒ๋ฆฌ์ ํจ์จ์ ์ธ Nginx๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค.
Apache vs Nginx Performance: Optimization Techniques - SitePoint
Nginx vs Apache: Which Web Server Is the Best? (2020 Edition)
๋์นญํค ์ํธํ ๋ฐฉ์๊ณผ ๊ณต๊ฐํค ์ํธํ ๋ฐฉ์์ ์ฐจ์ด
๋์นญํค ์ํธํ
์ ์ก์๋ ์ ๋ณด๋ฅผ ์ํธํํ๋ ๋ฐ ์ฌ์ฉํ๊ณ ์์ ์๋ ๋์ผํ ๋ฐฉ์๊ณผ ํค๋ฅผ ์ฌ์ฉํด ๋ณตํธํ ํ๋ค
๊ณต๊ฐํค(๋น๋์นญํค) ์ํธํ
๊ณต๊ฐ ํค์ ๊ฐ์ธ ํค์ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋น๋์นญ ๋ฐฉ์์ ๋์นญ ๋ฐฉ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
-
๋ ๊ฐ์ง ํค ์ค ํ๋๋ก ํ๋ฌธ์ ์ํธํํ๋ฉด ๋ค๋ฅธ ๋ณด์ ํค๋ฅผ ์ฌ์ฉํด์ผ๋ง ๋ณตํธํ ํ ์ ์๋ค.
-
๋ฐฅ์ด ์จ๋ฆฌ์ค์๊ฒ ํ์ ํ๊ณ ์ถ๋ค๋ฉด, ์จ๋ฆฌ์ค์ ๊ณต๊ฐ ํค๋ฅผ ์ป์ด์ ํ๋ฌธ์ ์ํธํํด ์ํธ๋ฌธ์ ๋ณด๋ธ๋ค. ์๋ฆฌ์ค๋ ์์ ์ ๊ฐ์ธ ํค๋ฅผ ์ฌ์ฉํด ๊ทธ ์ํธ๋ฌธ์ ๋ณตํธํํ๋ค.
์ธ์ ๋์นญ ์ํธํ๋ฅผ ์ฌ์ฉํ๊ณ , ์ธ์ ๋น๋์นญ ์ํธํ๋ฅผ ์ฌ์ฉํ ๊น?
-
๋น์ฌ์ ์ค ํ์ชฝ์ด(์๋ฒ๋ผ๊ณ ํ์) ์ผ๋ จ์ ํค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์ํธํ๋ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ ์๋ค.
-
์ด๋ ๊ณต๊ฐ ํค๋ก ์ํธํํ ์ ๋ณด๋ ๊ฐ์ธํค๋ฅผ ์ฌ์ฉํด์ผ๋ง ๋ณตํธํ ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ํฅํ๋ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ์ ๋ณด๋ฅผ ๋ณดํธํ๋ค.
-
์๋ฒ์์๋ง ๊ทธ ์ ๋ณด๋ฅผ ๋ณตํธํํ ์ ์๋ค. ๋ฐ๋ ๋ฐฉํฅ์ ๋ณดํธ๋์ง ์๋๋ค.
- ์๋ฒ์ ๊ฐ์ธ ํค๋ก ์ํธํ๋ ์ ๋ณด๋ ๊ณต๊ฐ ํค๋ฅผ ๊ฐ์ง ๋๊ตฌ๋ ์ง ๋ณตํธํ ํ ์ ์๋ค.
-
์๋ํธ(ํด๋ผ์ด์ธํธ)์ ์๋ฒ์ ๊ณต๊ฐ ํค๋ฅผ ์ฌ์ฉํด ๋ฌด์์๋ก ์์ฑ๋ ์ธ์ ์ํฌ๋ฆฟ์ ์ํธํํด ํต์ ์ ์์ํ๋ค.
- ๊ทธ ๋ค์ ์ํธ๋ฌธ์ ๋ค์ ์๋ฒ๋ก ๋ณด๋ด๊ณ , ์๋ฒ๋ ๋ค์ ์์ ์ ๊ฐ์ธ ํค๋ก ๋ณตํธํ ํ๋ฉด ๊ทธ ์ํฌ๋ฆฟ์ ๊ฐ๊ฒ ๋๋ค.
๋์นญํค์ ๊ณต๊ฐํค ๋ฐฉ์์ ์ฐจ์ด
-
๋์นญํค(๋น๊ณต๊ฐํค) ๋ฐฉ์
ํน์ง : ์๋ณตํธํ์ ์๋ก ๋์ผํ ํค๊ฐ ์ฌ์ฉ๋๋ ์ํธํ ๋ฐฉ์. ๊ทธ๋์ ํค๋ฅผ ๋น๊ณต๊ฐ ํ๋ค.
์ฅ์ : ์๋๊ฐ ๋น ๋ฅด๋ค.
๋จ์ : ํค ๋ฐฐ์ก ์ํ์ฑ ์กด์ฌํ์ฌ ์ก์ ์ธก์์ ์์ ์ธก์ ์ํธ ํค๋ฅผ ์ ๋ฌํ๋ ๊ณผ์ ์์ ๋ ธ์ถ ์ฐ๋ ค๊ฐ ์๋ค. ํต์ ์๋๊ฐ ๋ง์์ง ์๋ก ํค ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค.
๋ํ : DES, AES
-
๋น๋์นญํค(๊ณต๊ฐํค) ๋ฐฉ์
ํน์ง : ์๋ณตํธํ์ ์๋ก ๋ค๋ฅธ ํค๊ฐ ์ฌ์ฉ๋๋ ์ํธํ ๋ฐฉ์. ํ๋์ ํค๋ ๊ณต๊ฐํค๋ก ์ฌ์ฉ.
์ฅ์ : ํค ๋ฐฐ์ก์ ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ์ฐจ๋จํ์ฌ ์์ ์ฑ์ด ๋๋ค.
๋จ์ : ๋์นญํค(๋น๊ณต๊ฐํค)๋ฐฉ์์ ๋นํด์ ๋๋ฆฌ๋ค.
๋ํ : RSA
Collection์ ์ข ๋ฅ์ ํน์ง์ ์ค๋ช ํ์์ค
Collection framework
- ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ค์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ(์ถ๊ฐ, ์ญ์ , ๊ฒ์, ์ ์ฅ)ํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
1. collection
2. map
ํฌ๊ฒ ์ด ๋ ๊ฐ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ค, ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ค, ๊ทธ๋ฆฌ๊ณ ๊ด๋ จ ์๊ณ ๋ฆฌ์ฆ.
( A framework, by definition, is a set of interfaces that force you to adopt some design practices.)
Collection ๊ฐ์ฒด๋ ์ฌ๋ฌ ์์๋ค์ ๋ด์ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ปํ๋ค
- ๋ฐฐ์ด๊ณผ ๋น์ทํ์ง๋ง ์์๋ค์ ๊ณ์ ๋ฃ์ ์ ์๋ ๋ดํฌ(resizable) (Array List, Queue, Stack, Linked List)
Call By Value / Call By Reference ์ฐจ์ด ์ค๋ช ๋ฐ ์์
AspectJ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์
2์ฃผ์ฐจ ๋ด์ฉ์ ์ผ๋ถ ํฌํจ https://lkh6561.tistory.com/1