1. Sticky Sessions (Session Affinity)
๊ณ ์ ์ธ์ ๋๋ ์ธ์ ๋ฐ์ ์ฑ
- It is possible to implement stickiness so that the same client is alwyas redirected to the same instance behind a load balancer
- This works for Classic Load Balancers & Application Load Balancers
- The "cookie" used for stickiness has an expiration date you control
- Use case: make sure the user doesn't lose his session data
- Enabling stickiness may bring imbalance to the load over the backend EC2 instances
์ ๊ทธ๋ฆผ์ ๋ก๋ ๋ฐธ๋ฐ์์์ ํน์ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ํญ์ ๋์ผํ ๋ฐฑ์๋ ์ธ์คํด์ค๋ก ์ ๋ฌ๋๋ ์ํฉ์ ์ค๋ช
ํ๋ ๋ด์ฉ์ด๋ค.
๋ก๋ ๋ฐธ๋ฐ์์ ์์ฒญ ๋ถ๋ฐฐ
- ALB(Application Load Balancer)์ ๊ฐ์ ๋ก๋ ๋ฐธ๋ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ EC2 ์ธ์คํด์ค์ ์์ฒญ์ ๋ถ์ฐํ๋ค.
- ํ์ง๋ง, ํน์ ์ค์ (๊ณ ์ ์ฑ, ์คํฐํค ์ธ์ )์ ํ์ฑํํ๋ฉด ๋์ผํ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ํญ์ ๊ฐ์ ์ธ์คํด์ค๋ก ์ ๋ฌ๋ ์ ์๋ค.
์ด๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์
๋ฐธ๋ฐ์๊ฐ ๋ชจ๋ EC2 ์ธ์คํด์ค ์ ๋ฐ์ผ๋ก ๋ชจ๋ ์์ฒญ์ ํ์ฐํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฅธ ๋์์ด๋ค. 2๋ฒ ํด๋ผ์ด์ธํธ์์๋ ALB๊ฐ ๋ ๋ฒ์งธ ์ธ์คํด์ค์ ํต์ ํ๋ฉด ๋์ผํ ์ธ์คํด์ค๋ก ์ด๋ํ๊ณ 3๋ฒ์งธ ํด๋ผ์ด์ธํธ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋์์ CLB์ ALB์์๋ ์ค์ ํ ์ ์๋ค.
์๋ฆฌ๋ ๊ณ ์ ์ฑ๊ณผ ๋ง๋ฃ๊ธฐ๊ฐ์ด ์๋ ์ฟ ํค ๋๋ฌธ์ด๋ค. ์ด ์ฟ ํค๊ฐ ํด๋ผ์ด์ธํธ์์ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์์ฒญ์ ์ผ๋ถ๋ก์ ์ ์ก๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ฒ์ ์ฟ ํค๊ฐ ๋ง๋ฃ๋๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ EC2 ์ธ์คํด์ค๋ก ๋ฆฌ๋๋ ์
๋๋ค๋ ๊ฒ์ด๋ค.
๊ณ ์ ์ฑ(Sticky Session)์ ์๋ฆฌ
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ผ ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํน์ EC2 ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ค.
- ์ด ์ฟ ํค๋ ๋ง๋ฃ๋๊ธฐ ์ ๊น์ง ์ ์ง๋๋ฉฐ, ๋ง๋ฃ๋๋ฉด ์๋ก์ด EC2 ์ธ์คํด์ค๋ก ์ฐ๊ฒฐ๋ ์ ์๋ค.
์ฌ์ฉ ์์
- ๋ก๊ทธ์ธ ํ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ(์: ์ฌ์ฉ์ ์ธ์ฆ) ๋์ผํ ์ธ์คํด์ค๋ก ์ง์์ ์ผ๋ก ์ฐ๊ฒฐ๋ ํ์๊ฐ ์๋ค.
- ๊ณ ์ ์ฑ์ ํ์ฑํํ๋ฉด ์ผ๋ถ ์ธ์คํด์ค์ ๋ถํ๊ฐ ์ง์ค๋ ์ ์์ผ๋ฏ๋ก, ๋ถํ ๋ถ์ฐ์ ๊ณ ๋ คํด์ผ ํ๋ค.
์ฌ์ฉ์์ ๋ก๊ทธ์ธ ๋ก์ง์ฒ๋ผ ์ธ์ ๋ง๋ฃ๋ฅผ ์ฌ์ฉํ ๋๋ ์ค์ํ ์ ๋ณด๋ฅผ ์ทจํ๋ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ง ์๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ๋์ดํ ๋ฐฑ์๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋๋ค. ๊ณ ์ ์ฑ์ ํ์ฑํํ๋ฉด ๋ฐฑ์๋ EC2 ์ธ์คํด์ค ๋ถํ์ ๋ถ๊ท ํ์ ์ด๋ํ ์ ์๋ค. ์ผ๋ถ ์ธ์คํด์ค๋ ๊ณ ์ ์ฌ์ฉ์๋ฅผ ๊ฐ๊ฒ ๋๋ค.
2. Sticky Sessions - Cookie Names
Application-based Cookies (์ ํ๋ฆฌ์ผ์ด์
๊ธฐ๋ฐ ์ฟ ํค) ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ธฐ๊ฐ์ ์ง์ ํ ์ ์๋ค.
โ Custom cookie
- Generated by the target
- Can include any custom attributes required by the application
- Cookie name must be specified individually for each target group
- Don't use AWSALB, AWSALBAPP, or AWSALBTG (reserved for use by the ELB)
โ Application cookie
- Generated by the load balancer
- Cookie name is AWSALBAPP
Duration-based Cookies (๊ธฐ๊ฐ ๊ธฐ๋ฐ ์ฟ ํค) ํน์ ๊ธฐ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ฃ๋๋ฉฐ ๊ทธ ๊ธฐ๊ฐ์ด ๋ก๋ ๋ฐธ๋ฐ์ ์์ฒด์์ ์์ฑ๋๋ค.
- Cookie generated by the load balancer
- Cookie name is AWSALB for ALB, AWSELB for CLB
3. ๊ณ ์ ์ธ์ (Sticky Session) ์ค์ต
3-1. ALB์ Sticky Session ์ค์ ํ๊ธฐ
EC2 ๋์๋ณด๋ > target group > ๋์ ๊ทธ๋ฃน ํด๋ฆญ > Actions > Edit target group attributes > Target selection configuration > Turn on Stickiness > type & name ์ง์ > Save changes
์ด๋ ๊ฒ ํ๊ณ ๋ก๋๋ฐธ๋ฐ์ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด ํญ์ ๊ฐ์ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
3-2. ์ฟ ํค ํ์ธ
๊ฐ๋ฐ์๋๊ตฌ(F12) > Network ํญ > Name > Cookie
- request cookie: AWS ALB,
- response cookies: AWSALB, AWSALBCORS
AWS ALB๋ฅผ ์ฌ์ฉํ ๋, ์์ฒญ(Request)๊ณผ ์๋ต(Response)์์ AWSALB ๋ฐ AWSALBCORS ์ฟ ํค๊ฐ ์ค์ ๋๋ ์ด์ ๋ ์ธ์ ์ง์์ฑ(Session Stickiness) ๋๋ฌธ์ด๋ค.
Request ์ฟ ํค์์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ก๋ ๋ฐธ๋ฐ์์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์ฌ๊ธฐ ์๋ ์ฟ ํค๋ฅผ ๋ค์ ๋ณด๋ธ๋ค. ์ฟ ํค๊ฐ ์ธ์คํด์ค๋ฅผ ํต๊ณผํ๊ธฐ ๋๋ฌธ์ Stickiness๊ฐ ์คํ๋๋ ๊ฒ์ด๋ค.
AWSALB
- ALB(Application Load Balancer)๊ฐ ๋ฐ๊ธํ๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ฟ ํค
- ํน์ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ๋ฐฑ์๋ ์ธ์คํด์ค๋ก ์์ฒญ์ ๋ณด๋ด๋๋ก ํจ
- ๊ธฐ๋ณธ์ ์ผ๋ก 7์ผ ๋์ ์ ์ง๋จ
AWSALBCORS
- AWSALB์ ๊ฐ์ ์ญํ ์ ํ์ง๋ง, CORS(Cross-Origin Resource Sharing) ์์ฒญ์ ์ํ ๊ฒ
- CORS ์์ฒญ์์ SameSite=None; Secure ์์ฑ์ด ํ์ํด์ ๋ฐ๋ก ์์ฑ๋จ
- HTTPS๋ฅผ ํตํด์๋ง ๋์ํจ
4. ํธ๋ฌ๋ธ ์ํ ๐
์๋๋ ์ค์ต์ ํ๋ค๊ฐ ์๊ธด ๊ถ๊ธ์ฆ 1๊ฐ์ ์๋ฌ 2๊ฐ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
1. ์ฟ ํค ๋ง๋ฃ ๊ธฐ๊ฐ์ 1day๋ก ์ง์ ํ๋๋ฐ ๊ฐ๋ฐ์๋๊ตฌ ๋คํธ์ํฌ ํญ์์๋ 7days๋ก ๋ธ
2. Mark cross-site cookies as Secure to allow setting them in cross-site contexts ์๋ฌ - ๋ธ๋ผ์ฐ์ CORS ์ ์ฑ
3. Page layout may be unexpected due to Quirks Mode ์๋ฌ - Quirks Mode์ <!DOCTYPE html> ๊ด๋ จ
4-1. ์ฟ ํค ๋ง๋ฃ ๊ธฐ๊ฐ ๋ฌธ์
์์์ ๋ถ๋ช
ํ Stickiness duration์ 1days ๋ก ์ ํํ๋๋ฐ ๋คํธ์ํฌ ํญ์์๋ ๋ง๋ฃ๊ธฐ๊ฐ์ด ํ์ฌ ์์ (3์ 2์ผ) ๊ธฐ์ค์ผ๋ก 7์ผ ์ดํ์ธ 3์ 9์ผ๋ก ๋ฌ๋ค. ๋ ๊ฐ๋ ์๋ก ๋ค๋ฅธ ๊ฐ๋
์ธ๊ฐ?
โญ๊ทธ๋ ๋ค, Stickiness Duration (๊ณ ์ ์ฑ ์ง์ ์๊ฐ) ๊ณผ ์ฟ ํค์ ๋ง๋ฃ ๊ธฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ๊ฐ๋
์ด๋ค.
โ
Stickiness Duration vs. ์ฟ ํค ๋ง๋ฃ ๊ธฐ๊ฐ ์ฐจ์ด์ ๊ฐ๋จ ์ ๋ฆฌ
- Stickiness Duration์ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ๋ฐฑ์๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋๋ ์ธ์ ์ง์์๊ฐ์ด๋ค. AWS ALB์์ ์ฌ์ฉ์๊ฐ ์ง์ ์ค์ ํ๋ค. (์ฝ์์์ Stickiness Duration ์กฐ์ )
- ๋ฐ๋ฉด ์ฟ ํค ๋ง๋ฃ ๊ธฐ๊ฐ์ ๋ธ๋ผ์ฐ์ ๊ฐ `AWSALB` ๋๋ `AWSALBCORS` ์ฟ ํค๋ฅผ ์ผ๋ง๋ ์ค๋ ์ ์งํ๋์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด๊ณ ALB๊ฐ ์๋์ผ๋ก ์ค์ ํ๋ค. (๊ธฐ๋ณธ 7์ผ)
โ ๋คํธ์ํฌ ํญ์์ 7์ผ ๋ง๋ฃ๊ฐ ๋ณด์ด๋ ์ด์
- ALB๊ฐ AWSALB ๋๋ AWSALBCORS ์ฟ ํค๋ฅผ ๋ฐ๊ธํ ๋ ๊ธฐ๋ณธ ๋ง๋ฃ ๊ธฐ๊ฐ์ด 7์ผ๋ก ์ค์ ๋จ
- Stickiness Duration์ด 1์ผ์ด์ด๋, ์ฟ ํค ์์ฒด๋ ๋ธ๋ผ์ฐ์ ์์ 7์ผ ๋์ ๋จ์ ์์
- → ํ์ง๋ง ALB๋ 1์ผ ํ Stickiness๊ฐ ๋ง๋ฃ๋๋ฉด ์๋ก์ด ์ฟ ํค๋ฅผ ๋ฐ๊ธํ๊ณ , ๊ธฐ์กด ์ฟ ํค๋ฅผ ๋ฌด์ํจ
- ์ฆ, ๋คํธ์ํฌ ํญ์์ ์ฟ ํค ๋ง๋ฃ ๊ธฐ๊ฐ์ด 7์ผ๋ก ๋ณด์ฌ๋, ALB๋ ์ค์ ํ 1์ผ๋ง Stickiness๋ฅผ ์ ์งํ๋ค.
โ
ALB ์ฟ ํค ๋ง๋ฃ ๊ธฐ๊ฐ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ
์ฟ ํค ์์ฒด์ ๋ง๋ฃ ๊ธฐ๊ฐ์ Stickiness Duration๊ณผ ๋์ผํ๊ฒ ๋ง์ถ๊ณ ์ถ๋ค๋ฉด, AWS CLI ๋๋ Terraform์ผ๋ก ์์ ํด์ผ ํ๋ค.
์ํ๊น์ง๋ง AWS ์ฝ์์์๋ ์ฟ ํค ๋ง๋ฃ ๊ธฐ๊ฐ์ ์กฐ์ ํ ์ ์๋ค. ๐ฅ AWS CLI์์ ์๋ ์ฝ๋๋ฅผ ํตํด์ ์ด๋จ์๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
aws elbv2 modify-target-group-attributes \
--target-group-arn arn:aws:elasticloadbalancing:region:account-id:targetgroup/your-target-group-name \
--attributes Key=stickiness.lb_cookie.duration_seconds,Value=86400
- stickiness.lb_cookie.duration_seconds ๊ฐ์ 86400์ด(1์ผ)๋ก ์ค์ ํ๊ธฐ
- ๊ธฐ์กด 7์ผ(604800์ด)์์ 1์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ
โ Stickyness Duration ๋ณ๊ฒฝ๋ฐฉ๋ฒ
๋ง๋ฃ๊ธฐ๊ฐALB์์ ์ธ์ ์ ์ง(Stickiness) ์ค์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ด ์๋์ง ํ์ธํด๋ด.
AWS ์ฝ์ → EC2 → ๋ก๋ ๋ฐธ๋ฐ์(ALB) ์ ํAttributes(์์ฑ) → Stickiness settings(๊ณ ์ ์ฑ ์ค์ )"Enable Stickiness"(์ธ์ ์ ์ง ํ์ฑํ) ์ฒดํฌDuration-based stickiness(๊ธฐ๊ฐ ๊ธฐ๋ฐ ๊ณ ์ ์ฑ) ์ฌ์ฉ → ์ ์ ํ ๋ง๋ฃ ์๊ฐ ์ค์
4-2. ์ฟ ํค์ SameSite ๋ฐ Secure ์์ฑ ๊ด๋ จ ์๋ฌ
๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์์ ์ด์ ํญ์์ ํด๋น ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋ด๋ค.
Mark cross-site cookies as Secure to allow setting them in cross-site contexts Cookies marked with SameSite=None must also be marked with Secure to allow setting them in a cross-site context. This behavior protects user data from being sent over an insecure connection.
Resolve this issue by updating the attributes of the cookie: Specify SameSite=None and Secure if the cookie is intended to be set in cross-site contexts. Note that only cookies sent over HTTPS may use the Secure attribute. Specify SameSite=Strict or SameSite=Lax if the cookie should not be set by cross-site requests.
์ด ๋ฉ์์ง๋ ์ฟ ํค์ SameSite ๋ฐ Secure ์์ฑ ์ค์ ๋ฌธ์ ๋ก ์ธํด ๋ฐ์ํ๋ ๊ฒฝ๊ณ ์ด๋ค. AWS ALB(Application Load Balancer) ์ฌ์ฉ ์ AWSALBCORS๋ผ๋ ์ฟ ํค๊ฐ ์๋์ผ๋ก ์ค์ ๋๋๋ฐ, ๋ธ๋ผ์ฐ์ ๋ณด์ ์ ์ฑ
๋๋ฌธ์ SameSite=None ์์ฑ์ด ์ค์ ๋ ๊ฒฝ์ฐ Secure๋ ํ์ํ๋ค๋ ๋ด์ฉ์ด๋ค.
โ
ํด๊ฒฐ ๋ฐฉ๋ฒ
- AWSALBCORS ์ฟ ํค๊ฐ SameSite=None์ผ๋ก ์ค์ ๋์ด ์์ผ๋ฉด ๋ฐ๋์ Secure ์์ฑ๋ ์ถ๊ฐํด์ผ ํ๋ค.
- AWS ALB๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ์ฝ์๋ก ๊ฐ์ ALB ์์ฑ์์ Secure ์ฟ ํค๋ฅผ ํ์ฑํ ํด์ผ ํ๋ค.
- (๋๋ ๋ฐฑ์๋์์ Secure ์์ฑ์ ์ถ๊ฐํ๋๋ก ์๋ฒ ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ค.)
โ AWS ALB ์ฝ์์์ ์ฟ ํค ์ค์ ์ ์์ ํ๋ ๋ฒ
- AWS ์ฝ์ → EC2 → ๋ก๋ ๋ฐธ๋ฐ์(ALB) ์ ํ
- Attributes(์์ฑ) ํญ์์ Stickiness settings(๊ณ ์ ์ฑ ์ค์ ) ์์
- "SameSite=None; Secure" ์ค์ ์ ์ฉ
- ALB์ HTTP ๋ฆฌ์ค๋๊ฐ HTTPS๋ก ๋ฆฌ๋๋ ์ ํ๋์ง ํ์ธ
์ด ๋, ์ค์ํ ์ ์ Secure ์์ฑ์ ์ฌ์ฉํ๋ ค๋ฉด ์ฟ ํค๊ฐ HTTPS๋ฅผ ํตํด ์ ์ก๋์ด์ผ ํ๋ค.
๊ทธ๋์ ALB ๋ฆฌ์ค๋๊ฐ HTTP → HTTPS ๋ฆฌ๋๋ ์
์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋์ง๋ ํ์ธํด์ผ ํ๋ค.
์ ์๋ฌ์ ๊ด๋ จํ Google ๊ฐ๋ฐ์ ๊ณต์ ๋ธ๋ก๊ทธ ํ์ด์ง (DEVELOPERS.GOOGLE.COM)
https://web.dev/articles/samesite-cookies-explained?utm_source=devtools&hl=ko
SameSite ์ฟ ํค ์ค๋ช | Articles | web.dev
SameSite ์์ฑ์ ์ฌ์ฉํ์ฌ ํผ์คํธ ํํฐ ๋ฐ ์๋ ํํฐ ์ฌ์ฉ์ ์ํด ์ฟ ํค๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค. SameSite์ Lax ๋ฐ Strict ๊ฐ์ ์ฌ์ฉํ์ฌ CSRF ๊ณต๊ฒฉ์ ๋ํ ๋ณดํธ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ฉด ์ฌ์ดํธ์ ๋ณด์์
web.dev
4-3. Quirks Mode ๊ด๋ จ ์๋ฌ
"Page layout may be unexpected due to Quirks Mode" ๋ฉ์์ง๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์นํ์ด์ง๋ฅผ "Quirks Mode"๋ก ๋ ๋๋งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค. ์ด ๋ชจ๋๋ ์ค๋๋ ์น์ฌ์ดํธ๋ ์ฌ๋ฐ๋ฅธ DOCTYPE ์ ์ธ์ด ์๋ ํ์ด์ง์์ ๋ฐ์ํ๋ค.
โ
Quirks Mode๋?
- ํ๋์ ์ธ ์น ํ์ค์ ๋ฐ๋ฅด์ง ์๋ ๋ ๊ฑฐ์(์๋ ) ์นํ์ด์ง๋ฅผ ์ง์ํ๊ธฐ ์ํด ์กด์ฌํจ.
- ํ์ด์ง ๋ ์ด์์์ด ์์๊ณผ ๋ค๋ฅด๊ฒ ๋ณด์ผ ์ ์์.
- ํนํ CSS, flexbox, grid, position: fixed; ๋ฑ์ ์ต์ ๊ธฐ๋ฅ์ด ์ ๋๋ก ๋์ํ์ง ์์ ์ ์์.
๋๋ AWS ์์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํด ์๋ฒ๋ฅผ ๋๋ฆฌ๊ณ ์๊ธฐ ๋๋ฌธ์ HTML ํ์ผ์ `<!DOCTYPE html>` ์ ์ธ์ด ์์ด์ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค. ๊ฐ๋ฐ์๋๊ตฌ(DevTools) Elements(์์)ํญ์์ html ์ฝ๋๋ฅผ ํ์ธํ๋ฉด <!DOCTYPE html> ์ ์ธ์ด ์๊ณ ์๋์ฒ๋ผ ๊ทธ๋ฅ <html>๋ก ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
"Quirks Mode"๊ฐ ์๋์ค์ธ์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ Elements → <html> ํ๊ทธ๋ฅผ ํด๋ฆญํ ํ, Computed(๊ณ์ฐ๋ ์คํ์ผ) ํญ์์ "document mode" ๋๋ "Rendering Mode" ๋ฅผ ํ์ธํ๋ค. ์ ์์ ์ธ ํ์ด์ง๋ผ๋ฉด "Standards Mode"๊ฐ ๋ฌ๋ค. ๋ง์ฝ "Quirks Mode" ๋ผ๊ณ ๋์ค๋ฉด, ์๋ DOCTYPE ์ ์ธ์ ์ถ๊ฐํ๋ฉด ๋๋ค. ํ์ง๋ง ์๋ง์กด ๋ก๋ ๋ฐธ๋ฐ์(AWS ALB/ELB)๋ ๋จ์ํ ํธ๋ํฝ์ ๋ถ๋ฐฐํ๋ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ HTML ํ์ผ์ ์ง์ ์์ ํ ์๋ ์๋ค.
์ค 20๋ถ ๋์ ์ฐพ์๋ณด๋ค๊ฐ ๋๋์ด ๊ณ ์ณค๋คใ
ใ
์ค๋ง ์ด๊ฒ ๋ ๊นํ๋๋ฐ ์ฝ์์์ ํด๊ฒฐ๋ฒ์ด ์์๋ค!
๐ก ์ฝ์์์ ํด๊ฒฐ๋ฒ์?
EC2 ๋์๋ณด๋ > ๋ก๋ ๋ฐธ๋ฐ์(Load Balancers) > ์ค์ ํ ALB๋ฅผ ์ ํ > ์๋์ชฝ ๋ฆฌ์ค๋(Listeners) ํญ ์ ํ
> ๋ฆฌ์ค๋(์: HTTP:80 ๋๋ HTTPS:443)์ ๊ท์น ํธ์ง(Edit Rules) ํด๋ฆญ > "๊ณ ์ ์๋ต ์ถ๊ฐ(Add Fixed Response)" ๋ฒํผ ํด๋ฆญ > ์๋ต ์ฝ๋(Response Code): 200 ์ค์ > Content-Type: text/html ์ ๋ ฅ > ์๋ต ๋ณธ๋ฌธ(Response Body)์ ์๋ HTML ์ ๋ ฅ
<html><body><h1>ALB Fixed Response</h1></body></html>
์ ์ฅ ํ ์ ์ฉ ํ๋ฉด ALB๊ฐ ์ง์ ์๋ต์ ๋ณด๋ด๋ฉด์ Content-Type: text/html์ ํฌํจํ๊ฒ ๋๋ค.
Quirks Mode์ ๊ด๋ จํ Google ๊ฐ๋ฐ์ ๊ณต์ ๋ธ๋ก๊ทธ ํ์ด์ง (DEVELOPERS.GOOGLE.COM)
https://web.dev/doctype/?utm_source=devtools
ํ์ด์ง์ HTML doctype์ด ์์ผ๋ฏ๋ก ์ฟผํฌ ๋ชจ๋๊ฐ ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. | Lighthouse | Chrome for Developers
์ด์ ๋ธ๋ผ์ฐ์ ์์ ํ์ด์ง๊ฐ ์ฟผํฌ ๋ชจ๋๋ฅผ ์คํํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
developer.chrome.com
Sticky Sessions์ ๋ํ ๋ด์ฉ์ ํ๊ธ๋ก ์๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ธ์
https://ssunw.tistory.com/entry/ELB-%EB%B0%8F-ASG-Elastic-Load-Balancer-Sticky-Sessions
[ELB ๋ฐ ASG] Elastic Load Balancer - Sticky Sessions
Sticky Sessions (Session Affinity) ํ๋์ ๋ฐฑ์๋ ์๋ฒ ์ธ์คํด์ค๋ฅผ ๋ณต์ฌํ์ฌ ์ฌ๋ฌ๊ฐ์ ์ธ์คํด์ค๋ก ๋์ ์ ๋ AWS ๋ก๋ ๋ฐธ๋ฐ์๋ traffic ์ ๋ฐ๋ผ์ ์ธ์คํด์ค์ http request ๋ฅผ ๋ถ์ฐํ์ฌ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ A ์
ssunw.tistory.com