๐ฅ๏ธ Web Server
์น ์๋ฒ(Web Server)๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ HTTP ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ํด๋น ์์ฒญ์ ๋ฐ๋ผ ์ ์ ํ ์ ์ ๋๋ ๋์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ์ํํธ์จ์ด์ ๋๋ค. ๋ํ์ ์ธ ํน์ง์ ์๋์ ๊ฐ์ต๋๋ค.
HTTP ์์ฒญ ์ฒ๋ฆฌ:
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ HTTP ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ ์ฒ๋ฆฌํฉ๋๋ค.
์ ์ ํ์ผ ์๋น:
HTML, CSS, ์ด๋ฏธ์ง ๋ฑ์ ์ ์ ํ์ผ์ ์ ๊ณตํฉ๋๋ค.
์์ฒญ๋ ์ ์ ํ์ผ์ด๋ ์น ํ์ด์ง์์ ๋ธ๋ผ์ฐ์ ์๊ฒ ์์ฒญ๋ ์ ์ ์ธ ์์์ ๋งํฉ๋๋ค. ์ด ์์์ ์๋ฒ์์ ์์ฑ๋๊ฑฐ๋ ๋์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ๊ฒ์ด ์๋๋ผ, ์๋ฒ์ ์ ์ฅ๋์ด ์๋ ํ์ผ๋ก ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ ์์ ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ๋๋ ํ์ผ์ ๋๋ค. ์ฃผ๋ก HTML, CSS, JavaScript, ์ด๋ฏธ์ง, ํฐํธ ํ์ผ ๋ฑ์ด ํด๋น๋ฉ๋๋ค..
์๋ฅผ ๋ค์๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ํํ์ด์ง์ ์ ์ ํ ๋ณด์ด๋
๋ก๊ณ ์ด๋ฏธ์ง: ํํ์ด์ง ์๋จ์ด๋ ๋ก๊ทธ์ธ ํ์ด์ง ๋ฑ์์ ์ฌ์ฉ๋๋ ๋ก๊ณ ์ด๋ฏธ์ง๋ ์น ์๋ฒ์ ์ ์ฅ๋ ์ ์ ํ์ผ์ ๋๋ค.
์ด ์ด๋ฏธ์ง๋ ์น ํ์ด์ง๊ฐ ๋ก๋๋ ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๋์ด ํ๋ฉด์ ํ์๋ฉ๋๋ค.
CSS ์คํ์ผ ์ํธ: ์น ํ์ด์ง์ ์คํ์ผ์ ์ง์ ํ๋ CSS ํ์ผ๋ ์น ์๋ฒ์์ ์ ๊ณต๋ฉ๋๋ค.
JavaScript ํ์ผ:
์น ํ์ด์ง์ ๋์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ JavaScript ํ์ผ๋ ์น ์๋ฒ์์ ์ ๊ณต๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํํ์ด์ง์์ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ผ ๋ด์ฉ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ํ์ ์ฐฝ์ ํ์ํ๋ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ณต์ง์ฌํญ์ด๋ ์ด๋ฒคํธ ๋ฐฐ๋ ์ด๋ฏธ์ง: ํํ์ด์ง ์๋จ์ด๋ ์ฌ์ด๋๋ฐ ๋ฑ์ ํ์๋๋ ๊ณต์ง์ฌํญ์ด๋ ์ด๋ฒคํธ ๋ฐฐ๋ ์ด๋ฏธ์ง ๋ํ ์น ์๋ฒ์์ ์ ๊ณต๋๋ ์ ์ ํ์ผ์ ๋๋ค. ์ด๋ฌํ ์ด๋ฏธ์ง๋ค์ ์น ํ์ด์ง์ ์ฃผ์ ๋ด์ฉ๊ณผ ํจ๊ป ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๋์ด ํ๋ฉด์ ํ์๋ฉ๋๋ค.
ํ๋น์ฝ(์น์ฌ์ดํธ ์์ด์ฝ):
๋ธ๋ผ์ฐ์ ํญ์ด๋ ์ฃผ์ ํ์์ค์ ํ์๋๋ ํ๋น์ฝ ์ด๋ฏธ์ง ๋ํ ์น ์๋ฒ์์ ์ ๊ณต๋๋ ์ ์ ํ์ผ์ ๋๋ค. ์ด ์ด๋ฏธ์ง๋ ์น ํ์ด์ง๊ฐ ๋ก๋๋ ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๋์ด ๋ธ๋ผ์ฐ์ ์ ํ์๋ฉ๋๋ค.
์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ HTTP ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ์์ฒญ๋ ์ ์ ํ์ผ์ ์ฐพ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํฉ๋๋ค. ์ด๋ ์ฃผ๋ก ์ ์ ํ์ผ์ด ๋ณ๊ฒฝ๋์ง ์๊ณ ๊ณ ์ ๋ ํํ๋ก ์ ๊ณต๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ ์น ์๋ฒ๋ ํ์ผ ์์คํ ์์ ํ์ผ์ ์ฝ์ด์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋๋ฐ, ์ด๋ฅผ ํตํด ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ ์ ํ์ผ ์ ๊ณต์ด ๊ฐ๋ฅํฉ๋๋ค.
๋์ ์ฝํ ์ธ ์ฒ๋ฆฌ:
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS)์ ์ฐ๋ํ์ฌ ๋์ ์ธ ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์ฑ:
์ฌ๋ฌ ๋์ ์๋ฒ๋ก ์์ฒญ์ ๋ถ์ฐํ์ฌ ๋ถํ๋ฅผ ๋ถ์ฐ์ํต๋๋ค.
๋ณด์ ๊ธฐ๋ฅ:
SSL/TLS๋ฅผ ํตํ ์ํธํ, ๋ณด์ ํค๋ ์ค์ ๋ฑ์ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ก๊ทธ ๊ธฐ๋ก: ์์ฒญ๊ณผ ์๋ต์ ๋ํ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ์ฌ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ถ์์ ํ์ฉํฉ๋๋ค. ๊ฐ์ ํธ์คํ : ํ๋์ ์น ์๋ฒ์์ ์ฌ๋ฌ ๊ฐ์ ๋๋ฉ์ธ์ ํธ์คํ ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๋์ ์ปจํ ์ธ ์ฒ๋ฆฌ, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ณด์๊ธฐ๋ฅ ์ด ๋ถ๋ถ์ Nginx ์ค์ ํ์ผ์ ๋ณด๋ฉด์ ์ ๋ฆฌ๋ฅผ ํ๋๋ก ํ๊ฒ ์ต๋๋ค~!
๐ป WAS(Web Application Server)
WAS๋ "Web Application Server"์ ์ฝ์ด๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์ํํธ์จ์ด ํ๊ฒฝ์ ์ ๊ณตํ๋ ์๋ฒ์ ๋๋ค. WAS๋ ์ ์ ์ธ ์ฝํ ์ธ ๋ฟ๋ง ์๋๋ผ ๋์ ์ธ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์คํ ํ๊ฒฝ ์ ๊ณต:
WAS๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์ด ํ๊ฒฝ์๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ปดํ์ผ๋ฌ, ๋ฐํ์ ํ๊ฒฝ ๋ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
HTTP ์์ฒญ ์ฒ๋ฆฌ:
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ HTTP ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ์ด์ ๋ํ ์๋ต์ ์์ฑํฉ๋๋ค.
->๊ทธ๋ฌ๋ฉด Web Server ๋ HTTP์์ฒญ์ ์ฒ๋ฆฌํ๋ค๊ณ ํ๋๋ฐ ๋ฌด์จ ์ฐจ์ด์ง?
- Web Server๋ ๊ธฐ ์ค๋ช ํ ์ ์ ์ธ ํ์ผ์ ๋ํ ์์ฒญ๋ค์ ์ฒ๋ฆฌํ๊ณ WAS๋ ๋์ ์ธ ํ์ผ์ ๋ํ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
-WAS ๋ํ ์ ์ ์ธ ํ์ผ๋ค์ ์ฒ๋ฆฌํ ์ ์์ง๋ง, WAS๋ ๋ก์ง ์คํ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ญํ ๋ค์ ์ํํ๋ฉด์ ์๊ณ ์ฅ(์ ๋ฌ)์ด ๋ง๋ค๊ณ ๋ค์์ต๋๋ค, ๊ทผ๋ฐ ์ ์ ์ธ ํ์ผ ๋ํ ์ฒ๋ฆฌํ๋๋ก ํ์ ๋ ๋ถํ๊ฐ ๋ง์ด ๊ฑธ๋ ค ์ ์ข๊ธฐ๋ ํ๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ผ ์ WAS์์ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด Web Server์์ "์ฃ์กํฉ๋๋ค ์๋น์ค์ ์ค๋ฅ๊ฐ ์์ต๋๋ค"์ ๊ฐ์ ์ ์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ์ด์ผ ํ์ง๋ง WAS์์ ์ด ๊ธฐ๋ฅ์ ํ ๋ฒ์ ์ํํ๋๋ก ํ์ ์ "์ฃ์กํฉ๋๋ค ์๋น์ค์ ์ค๋ฅ๊ฐ ์์ต๋๋ค"์ ๊ฐ์ ์ ์ ํ์ด์ง ๋ํ ๋ณด์ฌ์ค ์ ์์ผ๋ฏ๋ก ํผ๋์ ๊ฐ์ค ํ ์ ์๋ค๊ณ ํฉ๋๋ค.
๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ:
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ธ์ ๊ด๋ฆฌ ๋ฑ์ ์์ ์ ํฌํจํ ์ ์์ต๋๋ค.
private final MemberRepository memberRepository;
@Autowired // ac.getBean(MemberRepository.class)
public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Override
public void join(Member member) {
memberRepository.save(member);
}
์์๊ฐ์ด ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ํธ์์ฉํ์ฌ(ํ์ ๊ฐ์ ) ์ ์๋ฏธํ ๊ธฐ๋ฅ์ ์คํํ๋ ๋น์ง๋์ค ๋ก์ง์ ์คํ ํฉ๋๋ค.
(์์๊ฐ ๋๋ฌด ํํธ์๋์ ใ ใ )
๋์ ํ์ผ์ด๋
์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋๊ธฐ ์ ์ ์๋ฒ์์ ๋์ ์ผ๋ก ์์ฑ๋๋ ํ์ผ๋ก, ๋งค๋ฒ ์์ฒญ ์ ์๋กญ๊ฒ ์์ฑ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์์ ์ ๋ ฅ ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ ํ์ผ์ด ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค.
๊ฒ์๊ธ ๋ชฉ๋ก์ด๋ ์ํ ๋ชฉ๋ก๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ๋ชฉ๋ก์ ์์ฒญํ๋ฉด ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํด๋น ์ ๋ณด๋ฅผ ์กฐํํ๊ณ , ์ด๋ฅผ HTML ํ์์ผ๋ก ๋์ ์ผ๋ก ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํฉ๋๋ค. ์ด๋ ์์ฑ๋ HTML ํ์ด์ง๊ฐ ๋์ ํ์ผ์ ํด๋นํฉ๋๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ ๊ฐ์ ธ์ ํ์ด์ง์ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์ ๋์ ํ์ผ ์์ฑ์ ์ผ๋ถ๋ถ์ ๋๋ค. ์ด๋ฌํ ๋์ ํ์ผ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๊ธฐ ์ํด ์น ์๋ฒ์ WAS๊ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ WAS์๊ฒ ์ ๋ฌํ์ฌ ๋์ ํ์ผ์ ์์ฑํ๊ณ , ์์ฑ๋ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํฉ๋๋ค.
ํ๋กํ ์ฝ ๋ฐ ๋ณด์ ๊ธฐ๋ฅ ์ ๊ณต:
HTTPS๋ฅผ ๋น๋กฏํ ๋ค์ํ ํ๋กํ ์ฝ์ ์ง์ํ๊ณ , ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ์์ ํต์ ์ ์์ ํ๊ฒ ์ ์งํฉ๋๋ค.
์ค๋ ๋ ๊ด๋ฆฌ ๋ฐ ์ฑ๋ฅ ์ต์ ํ:
๋ค์์ ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค๋ ๋ ํ์ ๊ด๋ฆฌํ๊ณ , ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ํธ๋์ญ์ ๊ด๋ฆฌ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํธ๋์ญ์ ์ ๊ด๋ฆฌํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
ํด๋ฌ์คํฐ๋ง ๋ฐ ๋ถํ ๋ถ์ฐ:
๋ค์์ WAS ์ธ์คํด์ค๋ฅผ ํด๋ฌ์คํฐ๋งํ์ฌ ๋ถํ ๋ถ์ฐ์ ์ํํ๊ณ , ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋ก์ปฌํ๊ฒฝ์์ ๊ฐ์๋ง ๋ฃ๊ณ ์ฝ๋๋ง ๋๋ฅ์ด๋ ๋๋ก์จ๋ Web Server๊ฐ ์์ด๋ ์ ํ๋๊ฑฐ ๊ฐ๋ค๊ณ ์๊ฐ์ ํ์์ง๋ง.
์์ ๊ฐ์ ํน์ง๋ค๋ก ์ธํด ๋ถ๋ฆฌ๋ฅผ ํ๋ค๋ ์ ์ ์๊ณ ๋๋๊น ๋ ์ฌ๋ฏธ์์ด์ง๋๊ฑฐ ๊ฐ๋ค.
๋น์ฅ ์ด์ ์ ํ๋ ํ๋ก์ ํธ์์๋ Nginx๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ธํ๊ฒ ํ๋ก์ ํธ๋ฅผ ํ๋๋ผ ์ ํํ ์๋ฆฌ๋ฅผ ๋ชจ๋ฅด๊ณ ์ฌ์ฉํ๋๊ฑฐ ๊ฐ๋ค, ์ด๋ ๊ฒ ์ ๋ฆฌ๋ฅผ ํ๋ฉด์ ์~ ๊ทธ๋์ ๊ทธ๋ฐ๊ฑฐ๊ตฌ๋ ๋ผ๋ ์๊ฐ์ ๋ง์ด ํ๋๊ฑฐ ๊ฐ๋ค. ๋ค์์๋ Nginx์ค์ ํ์ผ์ ์กฐ์ํ๋ ๊ฒฝํ์ ๋์ด๋ ค๋ด์ Web Server์ ๋ํ ๊ฐ๋ ์ ๋ค์ ์ ๋ฆฌํด์ผ๊ฒ ๋ค.