๐ ์ธ์ (Session) ๋ถ์ผ์น ๋ฌธ์ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ

์๋ฒ ๋ค์คํ ํ๊ฒฝ์์์ ์ธ์ ๋ถ์ผ์น
๋จ์ผ ์๋ฒ ํ๊ฒฝ์์๋ session์ ํตํ ๋ก๊ทธ์ธ์ ๊ตฌํํ ๋ session ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋ค.
ํ์ง๋ง ์๋น์ค๊ฐ ์ปค์ง์ ๋ฐ๋ผ ํ๋์ ์๋ฒ๋ก ์ด์ํ๋๊ฒ์ด ๋ถ๊ฐ๋ฅํด์ก๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๊ทธ๋์ ์๋ฒ๋ฅผ ์ ๊ทธ๋ ์ด๋ ํด์ผ๋๋๋ฐ ๋ค์๊ณผ ๊ฐ์ด ๋๊ฐ์ง ๋ฐฉ์์ด ์กด์ฌํ๋ค.
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ scale-up ๋ฐฉ์์ด๋ค.
์๋ฒ ์์ฒด ์ฑ๋ฅ์ ๋๋ ค ๋ถํ๋ฅผ ๊ฒฌ๋์ ์๊ฒ ํ๋ ๋ฐฉ์์ด์ง๋ง, ์ฌ์ ํ ์๋ฒ ํ ๋์ ๋ชจ๋ ํธ๋ํฝ์ด ์ง์ค๋๋ฏ๋ก ๋ง์ผ์ ์๋ฒ ์ฅ์ ๊ฐ ์๊ธธ์ ์๋ฒ๊ฐ ๋ณต๊ตฌ๋ ๋๊น์ง ์๋น์ค๋ฅผ ์ค๋จํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ ์ํ์ด ์๋ค. ์ฌ์ฉํ๋ ค๋ ์๋น์ค๊ฐ ์ค๋จ๋๋ค๋ฉด ์์ฒญ๋ ๋น์ฆ๋์ค ์์ค(์์ต ์์ค)์ด ์๊ธธ ์ ์๋ค.
๋๋ฒ์งธ ๋ฐฉ๋ฒ์ scale-out ๋ฐฉ์์ด๋ค.
์๋ฒ๋ฅผ ์ฌ๋ฌ๋๋ก ๋๋ ค์ ๊ฐ ์๋ฒ์ ๋ก๋๋ฐธ๋ฐ์ฑ์ผ๋ก ํธ๋ํฝ์ ๋ถ์ฐํ๊ฒ ํ๋ค. ๊ทธ๋์ ์๋ฒ ํ๋์ ์ฅ์ ๊ฐ ์๊ฒจ๋ ๋ค๋ฅธ ์๋ฒ๋ ์ด์์์ผ๋ ์๋น์ค ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ ์๋น์ค ์ด์ฉ์ ๋ฐ์ํ๋ ์ปค๋ค๋ ๋ฌธ์ ์ ์ด ์๋๋ฐ ๋ฐ๋ก ๋ฐ์ดํฐ ์ ํฉ์ฑ, ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ๋ค.
์๋ํ๋ฉด ์ฌ๋ฌ ๋์ ์๋ฒ๊ฐ ๊ฐ๊ฐ ์ธ์ ์ ์ฅ์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Scale-Up : ์๋ฒ์ ์คํ์ ๋๋ฆฌ๋ ๋ฐฉ์. (์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์นด๋๋ cpu ๋ถํ์ ์ ๊ทธ๋ ์ด๋ํ์ฌ ๋ถํ๋ฅผ ์ต์ํ)
Scale-Out : ์๋ฒ์ ๊ฐฏ์๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ์. (์ฌ๋ฌ๋์ ์๋ฒ๋ฅผ ๋์ด ๋ถํ๋ฅผ ๋ถ์ฐ)
๋ก๋๋ฐธ๋ฐ์ฑ ์ด๋?
์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ๋๊ณ ํธ๋ํฝ์ ๋ถ์ฐ์ฒ๋ฆฌํ์ฌ ์๋ฒ์ ๋ก๋์จ ์ฆ๊ฐ, ๋ถํ๋, ์๋์ ํ ๋ฑ์ ํด๊ฒฐํด์ฃผ๋ ์๋น์ค.
ํ์ ์ ๋ฌด๋ฅผ ํ์ฅ์ด ํ์๋ค์๊ฒ ๋ฐฐ๋ถํ๋๊ฒ๊ณผ ๊ฐ์ ์ด์น์ด๋ค.
์ดํดํ๊ธฐ ์ฝ๊ฒ ๊ทธ๋ฆผ์ผ๋ก ์์๋ฅผ ๋ค์ด๋ณด์.
1. ์๋ฒ๋ฅผ 3๋๋ฅผ ์ฆ๊ฐ์ํค๊ณ ๋ก๋๋ฐธ๋ฐ์๋ก ๊ฐ ์๋ฒ๋ก ํธ๋ํฝ ๋ถ์ฐ์ด ๋๊ฒ ์ด์์ค์ด๋ค.

2. ์ด๋ ์ฌ์ฉ์๊ฐ ์๋ฒ1์ ์ ์ํด ๋ก๊ทธ์ธ์ ์งํํด ์๋ฒ1์ ์ธ์ ์ด ์ ์ฅ๋๋ค

3. ๋ก๊ทธ์ธ ํํ ๊ฒ์ํ์ ๊ธ์ ์ฐ๊ธฐ ์ํด ์๋ฒ์ ์์ฒญํ๋๋ฐ, ๋ก๋๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ธํด ์๋ฒ1์ด ์๋ ์๋ฒ2๋ก ์์ฒญ๋์ด์ง๋ค.

4. ํ์ง๋ง ์๋ฒ2์๋ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ธ์ ์ด ์๊ธฐ๋๋ฌธ์ ๋ ๋ก๊ทธ์ธํ๋ผ๋ ์๋ต์ ๋ณด๋ด๊ฒ ๋๋ค. (๋ฐฉ๊ธ ๋ก๊ทธ์ธ ํ๋๋ฐ?)

์ด ์ฒ๋ผ, ์๋น์ค ์์ ์ ์ํด ์๋ฒ๋ฅผ ๋๋ ค๋จ๋๋ ์๋น์ค ํ์ง ์์ฒด๊ฐ ๋จ์ด์ง๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง์ดํด ๋ฒ๋ ธ๋ค.
์ด๋ฌํ ์ธ์ ์ ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์๋ ๋ฌด์์ด ์๋์ง ์ดํด๋ณด์.
๋ฐ์ดํฐ ์ ํฉ์ฑ (data consistency) ์ด๋?
์ด๋ค ๋ฐ์ดํฐ๋ค์ ๊ฐ์ด ์๋ก ์ผ์นํจ
์ธ์ ๊ฐ์ฒด๋ ์ด๋ค ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์๊น ?
์ธ์ ๊ฐ์ฒด๋ Key์ ํด๋นํ๋ SESSION ID์ ์ด์ ๋์ํ๋ Value๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
Value์๋ ์ธ์ ์์ฑ ์๊ฐ, ๋ง์ง๋ง ์ ๊ทผ ์๊ฐ ๋ฐ User๊ฐ ์ ์ฅํ ์์ฑ ๋ฑ ์ด Map ํํ๋ก ์ ์ฅ๋๋ค.
์ธ์ ์ ๋ถ์ผ์น ํด๊ฒฐ ๋ฐฉ๋ฒ
Sticky Session ๋ฐฉ์
๊ฐ๋จํ๊ฒ ์๊ฐํด๋ณด๋ฉด ๋ก๋๋ฐธ๋ฐ์๊ฐ ๋๋ค์ผ๋ก ์๋ฌด ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด์ ๋ฐ์๋ ๋ฌธ์ ์ด๋๊น, ๋ง์ผ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ด๋ ํ ์๋ฒ์ ๋๋ฌํด ์ธ์ ๋ฐ์ดํฐ๊ฐ ์๊ฒผ๋ค๋ฉด, ์์ผ๋ก ์ด ์๋ฒ๋ ํด๋น ํด๋ผ์ด์ธํธ๋ง์ ์์ฒญ/์๋ต๋ง ์ฒ๋ฆฌํ๋๋ก ๊ณ ์ ํด์ฃผ๋ฉด ๋๋ค.

Sticky Session์ด๋ ๋ง ๊ทธ๋๋ก ๊ณ ์ ๋ ์ธ์ ์ ์๋ฏธํ๋ค.
Sticky๋ ๋ฒ์ญํ๋ฉด ๋์ ์, ๊ป๋ฑ์ง ๋ผ๋ ๋ป์ด๋ค. ์ฝ๊ฒ ๋งํด์ ํด๋น ์๋ฒ์ ๊ป๋ฑ์ง์ฒ๋ผ ๋ถ์ด์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋ค์์ sticky session ๋ฐฉ์์ผ๋ก ์ด๋ป๊ฒ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ฐ๊ฒฐ์ ์ง์์ํฌ์ ์๋์ง์ ๊ณผ์ ์ด๋ค.

- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์ฒ์ ์์ฒญ์ ์ ๋ฌํ๋ค.
๊ทธ๋ฌ๋ฉด ๋ก๋๋ฐธ๋ฐ์๋ ์๋ฒ๋ค ์ค ํ๋์๊ฒ ์์ฒญ์ ๋ณด๋ด ์ฒ๋ฆฌํ๋ค. - ์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ์๋ต์ ๋ณด๋ผ ๋, Set Cookie : SERVERID=์๋ฒ1 ์ด๋ฐ ํํ๋ก ์ ๋ณด๋ฅผ ์ฟ ํค์ ๋ด์ ๋ณด๋ธ๋ค.
์ฝ๊ฒ ๋งํด ๋๋ฅผ ๋ด๋นํ ์๋ฒ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ์ ์ฟ ํค์ ์ ์ฅํ๋ ๊ฒ์ด๋ค. - ์ดํ, ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ๋ Cookie : SERVERID=์๋ฒ1 ์ ํจ๊ป ๋ณด๋ธ๋ค
๊ทธ๋ฌ๋ฉด ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์ฐ์ ์ ์ผ๋ก ์์ฒญ์ ์ฟ ํค ์ ๋ณด๊ฐ ์๋์ง ๋ถํฐ ํ์ธํ๊ณ , ์ฟ ํค์ ์ ๋ณด๋ฅผ ํ์ธํ๋ค๋ฉด ํด๋น ์์ฒญ์ ํด๋น ์ฟ ํค๊ฐ ์์ฑ๋์ด ์๋ ์๋ฒ๋ก ๋ณด๋ด์ง๊ฒ ๋๋ค. - ๋ง์ฝ ์กด์ฌํ์ง ์๋ ์ฟ ํค๋ผ๋ฉด, ๋ก๋ ๋ฐธ๋ฐ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ํด ์ ์ ๋ ๋ค๋ฅธ ์๋ฒ์ ์ฟ ํค๊ฐ ์์ฑ๋์ด ๋ค์์ ๋๊ฐ์ ์์ฒญ์ด ์ค๋ฉด ๊ฐ์ ๊ฒฝ๋ก๋ก ๋งตํ์์ผ ์ค ์ ์๋๋ก ํ๋ค.
์ด๋ ๊ฒ ๋์ผํ ์ฌ์ฉ์๊ฐ ์ธ์ ์ด ์๋ ํด๋น ์๋ฒ์ ๊ณ์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋๋ก, ์ง์์ ์ผ๋ก ์๋ฒ ์ ๋ณด๊ฐ ์ฟ ํค๋ฅผ ํตํด ์๋ต์ ์ฝ์ ๋์ด ๋ณด๋ด์ง๊ฒ ๋์ด, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์๋ก ์ฐ๊ฒฐ์ ์ ์งํ ์ ์๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ์ ๋ ์ธ์ ์ ๋ํ ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ์์ ์์ ๋ก์์ง ์ ์๊ฒ ๋๋ค.
๋ํ์ ์ผ๋ก AWS ELB(Elastic Load Balancer)๋ Sticky session์ ํ์ฉํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
Sticky Session ๋ฌธ์ ์
- ํน์ ์๋ฒ์ ํธ๋ํฝ์ด ์ง์ค๋๋ ๋ฌธ์
๊ณ ์ ๋ ์ธ์ ์ ์ฌ์ฉํ๋ค๋ ๋ง์ ์ฌ์ฉ์๊ฐ ์ ์ํด์ผ ํ๋ ์๋ฒ๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ๋์ ์๋ฒ์ ํธ๋ํฝ์ด ์ง์ค๋ ์ ์๋ค๋ ์ํ์ฑ์ ๊ฐ๊ณ ์๋ค๋ ๋ง์ด๋ค.
์ฆ, ๋ณธ๋ ๋ชฉ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด ์ ๋๋ก ์ด๋ค์ง์ง ์์ ์ ์๋ค. - ์ธ์
์ ๋ณด์ ์ ์ค
์๋น์ค ์ค์ ๋ง์ผ ํ๋์ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฉด ํด๋น ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ค์ ์ธ์ ์ ๋ณด๋ฅผ ๋ชจ๋ ์๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๋ค๋ฅธ ์๋ฒ์์ ์ธ์ ์ธ์ฆ์ ๋ค์ ํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ๋๋ค.
์ด์ฒ๋ผ Sticky session์์๋ ์ฌ์ฉ์์ ์ธ์ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ ์๋ฒ๋ฅผ 1:1๋ก ๋งคํํด์ฃผ์ด ์ธ์ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํด์ง๋ง, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด Scale out์ ์ฅ์ ์ธ ํธ๋ํฝ ๋ถ์ฐ๊ณผ ๊ฐ์ฉ์ฑ์ ์ ๋๋ก ํ์ฉํ์ง ๋ชปํ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๊ฒ ๋๋ค.
Session Clustering ๋ฐฉ์
์์ sticky ์ธ์ ์ ๊ฐ ์๋ฒ์ ์ธ์ ์ ์ ์ฅํด๋์๋๋ ์ธ์ ๋ถ์ผ์น๋ ํด๊ฒฐ๋์์ง๋ง ๋๋ฆฌ์ด ์ฑ๋ฅ์ด ์์ข์์ง๋ค๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์๋ค.
๊ทธ๋ฌ๋ฉด ์ธ์ ์ ๋ณด๋ฅผ ๊ฐ ์๋ฒ๋ง๋ค ์ ์ฅํ๋๊ฒ ์๋ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํด ์๋ฒ๋ค์๊ฒ ์ ํํด ๊ฐ์ ธ๋ค ์ธ์ ์์ผ๋ฉด ๋์ง ์์๊น?

์ธ์ ํด๋ฌ์คํฐ๋ง์ ์๋ฒ๋ค์ ํ๋์ ํด๋ฌ์คํฐ๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๊ณ , ํด๋ฌ์คํฐ ๋ด์ ์๋ฒ๋ค์ด ์ธ์ ์ ๊ณต์ ํ ์ ์๋๋ก ํ๋ ๋ฐฉ์์ด๋ค.
์๋ฅผ๋ค์ด ์๋ฒ1์์ login session์ด ์ ์ฅ๋์๋ค๋ฉด, ์๋ฒ2์ ์๋ฒ3์๋ ์๋ฒ1์ ์ ์ฅ๋์ด์๋ ์ธ์ ์ ์ ํ(๋ณต์ฌ)ํ๋ ๊ฒ์ด๋ค.
WAS๋ง๋ค session clustering์ ์ง์ํ๋ ๋ฐฉ์์ด ์กฐ๊ธ์ฉ ๋ค๋ฅธ๋ฐ,
๊ทธ์ค ๊ฐ์ฅ ๋ํ์ WAS์ธ ํฐ์บฃ(Tomcat) ์์๋ ์ด๋ป๊ฒ Session Clustering์ ๊ตฌํํ๊ณ ์๋์ง ์์๋ณด์.
Tomcat Session Clustering
Tomcat์์๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก Session Clustering์ ๊ตฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
1. All-to-All Session Replication

All-to-All ๋ฐฉ์์ ํ๋์ ์ธ์ ํด๋ฌ์คํฐ ๋ด์์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ณ๊ฒฝ๋ ์ฌํญ์ด ๋ค๋ฅธ ๋ชจ๋ ์๋ฒ๋ก ๋ณต์ ๋๋ ๋ฐฉ์์ผ๋ก, ํฐ์บฃ์์ ์ ๊ณตํ๋ DeltaManager ํด๋์ค๋ฅผ ํตํด ๊ตฌํ๋๋ค.
ํน์ ์๋ฒ์ ์์ฑ๋ ์ธ์ ์ ํด๋ฌ์คํฐ๋ฅผ ์ด๋ฃจ๋ ๋ชจ๋ ์๋ฒ์ ์ธ์ ์ ๋ณต์ ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ํ ๊ณณ์ผ๋ก ์ง์ ํ์ง ์์๋ ๋๊ณ ๋ค๋ฅธ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๋๋ผ๋ ๊ฐ์ ์ธ์ ์ ์ ์งํ ์ ์๋ค.
๋ง์ผ ์ด์ฉํ๊ณ ์๋ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋ฒ์์ ์ธ์ ์ ์ ์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๋ ๋์ผํ ์๋น์ค ํ๊ฒฝ์ ์ ๊ณต๋ฐ์ ์ ์๊ฒ ๋๋ค.
ํ์ง๋ง All-to-All ๋ฐฉ์์์๋ ๋ชจ๋ ์๋ฒ๊ฐ ์ ์ฒด ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ์๋ฒ์์ ์ธ์ ์ ์ฐพ๊ธฐ ์ํ ์ถ๊ฐ์ ์ธ ๋คํธ์ํธ I/O๊ฐ ๋ฐ์ํ์ง ์์ง๋ง, ๊ทธ๋งํผ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค๋ ๋จ์ ์ด ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ์ ์ ์ ์ฅํ ๋ ์๋ฒ ์ ๋งํผ ๋ณต์ ํ๊ณ ๊ฐ ์๋ฒ์ ์ ๋ฌ, ์ ์ฅํด์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ์์ ๋น๋กํ์ฌ ๋คํธ์ํฌ ํธ๋ํฝ์ด ์ฆ๊ฐํ๊ฒ ๋๊ธฐ๋ ํ๋ค.
์ถ๊ฐ์ ์ผ๋ก ์ธ์ ์ ํ ์์ ์ค ๋ชจ๋ ์๋ฒ์ ์ธ์ ์ด ์ ํ๋๊ธฐ๊น์ง์ ์๊ฐ์ฐจ๋ก ์ธํ ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ์ ๊ฐ์ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ค.
ํฐ์บฃ ๊ณต์ ๋ฌธ์์์๋ All-to-All ๋ฐฉ์์ ์๊ท๋ชจ ํด๋ฌ์คํฐ ํ๊ฒฝ(๋ ธ๋๊ฐ 4๊ฐ ๋ฏธ๋ง)์์ ์ข๊ณ , ์ด๋ณด๋ค ํฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์์๋ ์ถ์ฒํ์ง ์๋๋ค๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ DeltaManager๋ฅผ ์ฌ์ฉํ ๋ฐฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฐํฌ๋์ง ์์ ๋ ธ๋์๋ ๋ณต์ ๋ฅผ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ํธ๋ํฝ์ ์๋ฒ์ ๋ฐ์์ํค๋ ๋ฌธ์ ๋ ์กด์ฌํ๋ค.
Tomcat์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์์ผ๋ก ์๊ฐํ BackupManager๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ๋ ์ ๊ณตํด์ค๋ค.
2. Primary-Secondary Session Replication

Primay-Secondary ๋ฐฉ์์ Primary ์๋ฒ์ ์ธ์ ๋ฐ์ดํฐ๋ฅผ Secondary(Backup) ์๋ฒ์๋ง ์ ์ฒด ๋ณต์ ํ์ฌ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก, BackupManager ํด๋์ค๋ฅผ ํตํด ์ด ๋ฐฉ์์ ์ ๊ณตํ๊ณ ์๋ค.
All-to-All Session Replication ๋ฐฉ์์ ๊ทธ๋ฅ ๋ฌด์ํ๊ฒ ๋ชจ๋ ์๋ฒ์ ๋ณต์ ํ๊ณ ์ ์ฅํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, Primary ์๋ฒ์ Secondary(Backup) ์๋ฒ์๋ง ์ ์ฒด ์ธ์
์ ๋ณต์ ํ์ฌ ์ ์ฅํ๋, ๋๋จธ์ง ์ด์ธ์ ์๋ฒ๋ค์๋ ์ธ์
์ Key์ ํด๋นํ๋ JSESSIONID๋ง ๋ณต์ , ์ ์ฅํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ ๋ฐฉ์์ด๋ค.
ํ์ง๋ง ๋ง์ผ Primary, Secondary ์๋ฒ๋ฅผ ์ ์ธํ ๋ค๋ฅธ ์๋ฒ์ ์ธ์
์ ๋ณด๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ ๋ค์ ์จ์ ํ ์ธ์
์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด์๋ Primary, Secondary์ ๋ค์ ์์ฒญ์ ๋ณด๋ด์ผํ๋ค๋, ์ธ์
๋ณต์ ๋ฅผ ์ํ ๊ณผ์ ์ด ์ํ๋๋ ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค.
Primary-Secondary Session Replication ๋ฐฉ์์ ๋น๊ต์ ๋๊ท๋ชจ ํด๋ฌ์คํฐ ํ๊ฒฝ์์ ์ ํฉํ ๋ฐฉ์์ด๋ผ๊ณ ํ๋ค.
Session Clustering ๋ฌธ์ ์
์์์ ํฐ์บฃ ์ธ์ ํด๋ฌ์คํฐ๋ง์ ์ค๋ช ํ๋ฉด์ ๊ฐ๊ฐํ ๋ฌธ์ ์ ์ ๋ํด ์ธ๊ธํ์ง๋ง ์ทจํฉํ์ฌ ์ ๋ฆฌํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ์๋ฒ ์ธํ
์ ์ด๋ ค์
์ด ๋ฐฉ์์ scale out ๊ด์ ์์ ์๋ก์ด ์๋ฒ๊ฐ ํ๋ ๋ฐ ๋๋ง๋ค ๊ธฐ์กด์ ์กด์ฌํ๋ WAS์ ์๋ก์ด ์๋ฒ์ IP/Port๋ฅผ ์ ๋ ฅํด์ ํด๋ฌ์คํฐ๋ง ํด์ค์ผ ํ๋ ๋ถํธํจ์ด ์๋ค. - ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋น์ฉ
์๋ฒ๋ง๋ค ๋์ผํ ์ธ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ๋๊ธฐ ๋๋ฌธ์, ์๋ฒ๊ฐ ํ์ฅ๋ ์๋ก ๋ณต์ ํด์ผ ํ ์ธ์ ๋ฐ์ดํฐ๊ฐ ๋์ด๋๊ณ ์ด๋ ์ถ๊ฐ์ ์ธ ์ค๋ฒํค๋๋ก ์ด์ด์ง๋ค.
Tomcat์ ์๋ก ๋ค์์ ๋, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ์ Tomcat ๋ ธ๋์๊ฒ ์ ๋ฌํด์ผ ํด์ผ ํ๊ณ ๋ฐฐํฌํ๋ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋ณต์ฌ๋ฅผ ์งํํ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง๋๋ค.
์ฆ, ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์๋๋ค. - ๋คํธ์ํฌ ํธ๋ํฝ ์ฆ๊ฐ
๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋ ๋ง๋ค ์ธ์ ์ ์ ํ(๋ณต์ฌ)ํ๋ ์์ ์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ์์ฒญ ํธ๋ํฝ์ด ์ฆ๊ฐํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฒ๊ฐ ๋์ด๋ ์๋ก ์ด ํธ๋ํฝ์ ๋์ฑ ์ฌํด์ง ๊ฒ์ด๋ค.
๋ํ, ๋ณต์ฌ ๋ฟ๋ง ์๋๋ผ ์๋ฒ๊ฐ ๋์ด๋จ์ ๋ฐ๋ผ ์ธ์ ์ ์ ์ฅํ๊ณ ์ฐพ์์ค๋ ๊ณผ์ ์์ ์ถ๊ฐ์ ์ธ ํธ๋ํฝ์ด ๋ฐ์ ํ ์๋ ์์ด ํ์ฅ์ ํ๊ณ๊ฐ ์๋ค. - ์์ฐจ๋ก ์ธํ ์ธ์
๋ถ์ผ์น ๋ฐ์
์ธ์ ์ ํ ์์ ์ค ๋ชจ๋ ์๋ฒ์ ์ธ์ ์ด ์ ํ๋๊ธฐ๊น์ง์ ์๊ฐ์ฐจ๋ก ์ธํ ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ์ ๊ฐ์ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ค.
์ด์ฒ๋ผ ์ธ์ ํด๋ฌ์คํฐ๋ง์ sticky ์ธ์ ์ ๋ฌธ์ ์ ์ธ ํน์ ์๋ฒ์๋ง ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
๊ทธ๋ฌ๋ ์ธ์ ํด๋ฌ์คํฐ๋ง์ด๋ sticky ์ธ์ ์ด๋ ์๋ฒ๊ฐ ์ธ์ ์ด๋ผ๋ ์ํ(๋ฐ์ดํฐ)๋ฅผ ๊ฐ์ง๋ค๋ ๊ฒ์ ๋ณํจ์ด ์๋ค๋ ํน์ง์ด ์๋ค
"์๋ฒ๊ฐ ์ํ(๋ฐ์ดํฐ)๋ฅผ ๊ฐ์ง๋ค"๋ผ๋ ์๋ฏธ๋ Scale out ๋ฐฉ์์ผ๋ก ํ์ฅ์ ํ์ ๋ ์๋ฒ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฅํ๋ ์๋ฒ์๋ ๋๊ฐ์ด ๋ง์ถฐ์ค์ผ ํ๋ค๋ ๋ป์ด๋ค. ์ด๋ ๊ณง ์ค๋ฒํค๋๋ก ์ด์ด์ง๋ค.
์ ๋ฆฌํ๋ฉด, ์ธ์ ํด๋ฌ์คํฐ๋ง์ ์ ํฉ์ฑ ์ด์๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง, ์ฑ๋ฅ์ ์ธ ํ๊ณ๊ฐ ์กด์ฌํ๋ค๊ณ ๋ง ํ ์ ์๋ค.
Session Storage ๋ฐฉ์
๊ทธ๋ ๋ค๋ฉด ์์ ๋ ๋ฐฉ์์ ๋จ์ ์ ๋ณด์ํ์ฌ ๋ค์ค ์๋ฒ์์ ์ธ์ ์ ๊ณต์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น?
๋ชจ๋ ์๋ฒ์ ์ผ์ผํ ์ธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณต์ /์ ์ฅํ๋ ๊ฒ์ด ๋ญ๋น๋ผ๋ฉด, ๊ทธ๋ผ ๋ณ๋์ ์ธ์ ์ ์ฅ์๋ฅผ ์ธ๋ถ์์ ์์ฑํ๊ณ ๊ฐ ์๋ฒ๋ค์ด ๊ฐ์ ธ์ ์ฌ์ฉํ๋ฉด ๋์ง ์์๊น?

์ธ์ ์คํ ๋ฆฌ์ง๋ ๊ธฐ์กด์ ์๋ฒ ๋ด ์ธ์ ์ ์ฅ์๋ฅผ ์ด์ฉํ์ง ์๊ณ , ๋ก์ปฌ ์๋ฒ์์ ๋ถ๋ฆฌํด ๋ณ๋์ ์ธ์ ์ ์ฅ์๋ฅผ ๋๊ณ ์๋ฒ๋ค์ด ์ด๋ฅผ ๊ณต์ ํจ์ผ๋ก์จ ์ธ์ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ด๋ค.
๋ฐ๋ผ์ ์๋ก์ด ์๋ฒ๋ฅผ ์ถ๊ฐํ๋๋ผ๋ ์ถ๊ฐํ ์๋ฒ์๋ง ์ธ์ ์ ์ฅ์ ์ ๋ณด๋ฅผ ๋ช ์ํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ์๋ฒ์ ์์ ์ด ๋ฐ์ํ์ง ์๋๋ค๋ ์ฅ์ ์ด ์๊ฒ ๋๋ค.
๊ทธ๋์ ์ธ์ ์ ์ ์ฅํ ๋ ์ธ์ ์ ๋ณต์ ํด ๋ค๋ฅธ ์๋ฒ๋ค์ ๋ณด๋ผ ํ์๊ฐ ์์ด WAS๋ค๋ผ๋ฆฌ ๋ถํ์ํ ๋คํธ์ํฌ ํต์ ๊ณผ์ ์ ์งํํ์ง ์์๋ ๋์ด ์ฑ๋ฅ๋ฉด์์๋ ์ ๋ฆฌํ๋ค.
๋ํ, ํ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์ธ์ ์ ์ด์ ๋ ๋ฆฝ๋์ด ๋ณ๋๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ธ์ ์ ํ์ฉํ ์๋น์ค์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
Session Storage ์ข ๋ฅ
์ธ์ Storage์ ์ข ๋ฅ์๋ ๋๊ฐ์ง๊ฐ ์๋ค.
๋จผ์ ์ฒซ๋ฒ์งธ๋ก Disk๋ฐฉ์์ผ๋ก ๋์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๊ณ ๋๋ฒ์งธ๋ก In-Memory ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ค.
ํด๋น ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ ์ ์ ํฉ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ์ธ์ ์ ์ฅ์๋ก ์ด๋ค๊ฒ์ ์ฌ์ฉํ ์ง ๊ณ ๋ฏผํด๋ณด๊ณ , ๊ทธ์ ๋ฐ๋ฅธ ํ๋นํ ์ด์ ๊ฐ ๋ท๋ฐ์นจ ๋์ด์ผ ํ๋ค.
1. Disk Database (MySql, Oracle)
๋ง ๊ทธ๋๋ก ์ธ์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ ์์ด ๊ณต๊ธ์ด ์๋๋ ๋์คํฌ์๋ ์ ๋ณด๋ฅผ ์์ง ์๊ณ ์ ์ ์งํ๋ค.
ํ์ง๋ง ํฐ ๋จ์ ์ด ํ๋ ์๋๋ฐ ์๋๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค๋ ๊ฒ์ด ๋งน์ ์ด๋ค.

2. In-Memory (Redis / Memchached)
In-Memory๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๋ฐฉ์๋ค.
๊ทธ๋์ I/O์๋๊ฐ ๋์คํฌ์ ๋น๊ตํด์ ๋งค์ฐ ๋น ๋ฅด๋ค.
ํ์ง๋ง ์ด๊ฒ๋ํ ๋จ์ ์ด ์๋๋ฐ ์ ์์ด ๊ณต๊ธ๋์ง ์์ผ๋ฉด ๊ธฐ์ตํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค.

๋๊ฐ์ง ๋ฐฉ์์ค์ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค๋ ๊ด์ ์์ ์ด๋๊ฒ์ด ์ข์๊น?
์๊ฐํด๋ณด๋ฉด Session์ ์๊ตฌ์ ์ธ ์ ์ฅ์ด ํ์ํ์ง ์๋๋ค.
์๋ก, ๊ฐ์ธ์ ๋ณด๊ฐ ๋ ์ค์ํ ์์ฆ์ ์ง์ ํ ์๊ฐ์ ๋๊ธฐ๋ฉด ์๋์ผ๋ก ๋ก๊ทธ์์๋๊ฒ ์ฒ๋ฆฌ ๋์ด ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ธ์ ์ ๋ณด๋ ์๊ตฌ์ ์ธ ์ ๋ณด ์ ์ฅ์ ์ฝ์ํ๋ค๋ ๋์คํฌ ๋ฐฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋งค๋ ฅ์ ์ด์ง ๋ชปํ๋ค๊ณ ๋ณผ ์ ์๋ค.
๋์ ์ ๋์คํฌ์ ๋นํด ์๋์ ์ ์ ์ถ๋ ฅ ์๋๊ฐ ๋น ๋ฅธ In-Memory ๋ฐฉ์์ด ๋ ์ ํฉํ๋ค.
Session Storage ๋ฌธ์ ์
- ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ชจ๋ ์๋ฒ๊ฐ ์ฅ์
์ธ์ ํด๋ฌ์คํฐ ๊ฐ์๊ฒฝ์ฐ ํ๋์ ์๋ฒ์ ์ฅ์ ๊ฐ ์๊ฒจ๋ ๋๋จธ์ง ์๋ฒ์ ๋ฏธ๋ฆฌ ๋ณต์ ๋ฅผ ํด๋์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ ์๋ค.
๊ทธ๋ฌ๋ ์ธ์ ์ ์ ์ฅํ๊ณ ์๋ Session storage ์์ฒด์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ชจ๋ ์ธ์ ์ ์์ด๋ฒ๋ ค ์ธ์ ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์๋ฒ์ ์ํฅ์ด ๋ผ์น๋ ์ํ์ด ์๋ค.
๊ทธ๋์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์ผํ ์ธ์ ์ ์ฅ์๋ฅผ ํ๋ ๋ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ(๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๋ณต์ )์ผ๋ก ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณค ํ๋ค. - ์ฑ๋ฅ์ ์ธ ๋ง์ด๋์ค
๋ณ๋์ Session storage๋ก๋ถํฐ ์ธ์ ์ ๋ถ๋ฌ์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ๋คํธ์ํธ I/O๊ฐ ๋ฐ์ํ๋ค๋ ์ ์ด๋ค.
์ธ์ ์ ์ธ๋ถ์์ ๊ฐ์ ธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฑ๋ฅ์ ์ธ ๋ฉด์์ ๋จ์ด์ง ์ ๋ฐ์ ์๋ค.
# ์ฐธ๊ณ ์๋ฃ
https://liasn.tistory.com/3
https://1-7171771.tistory.com/126
https://d2.naver.com/helloworld/284659?source=post_page-----f1fd4ceecbc7----------------------
https://hyuntaeknote.tistory.com/6