[Infra] 4-Tier 상세 뢄석 2편: Tomcat 10κ³Ό JSP 동적 μ›Ή μ„œλΉ„μŠ€

μ•ˆλ…•ν•˜μ„Έμš” λŒ€λ¦¬λ‹˜! 🫑

인프라 상세 뢄석 μ‹œλ¦¬μ¦ˆμ˜ 두 번째 주인곡은 우리 λΈ”λ‘œκ·Έμ˜ 심μž₯이자, μžλ°” 기반 동적 νŽ˜μ΄μ§€λ₯Ό μ²˜λ¦¬ν•˜λŠ” Tomcat 10 (WAS)μž…λ‹ˆλ‹€. πŸš€

0. Tomcat 10 ꡬ동 (Docker ν™˜κ²½)

μš°λ¦¬λŠ” κ²½λŸ‰ν™”λœ tomcat:10-jdk17-temurin 이미지λ₯Ό μ‚¬μš©ν•˜μ—¬ WASλ₯Ό μš΄μ˜ν•©λ‹ˆλ‹€. 특히 호슀트의 μ†ŒμŠ€ 폴더λ₯Ό μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ webapps에 λ§ˆμš΄νŠΈν•˜μ—¬ μ†ŒμŠ€ μˆ˜μ • μ‹œ μ¦‰μ‹œ λ°˜μ˜λ˜λ„λ‘ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

# docker-compose.yml WAS μ„€μ •λΆ€
was:
  image: tomcat:10-jdk17-temurin
  container_name: tomcat-was
  restart: always
  environment:
    TZ: Asia/Seoul
  volumes:
    - ./tomcat/webapps:/usr/local/tomcat/webapps
    - ./tomcat/postgresql-42.7.2.jar:/usr/local/tomcat/lib/postgresql-42.7.2.jar
    - ./tomcat/jedis-5.1.0.jar:/usr/local/tomcat/lib/jedis-5.1.0.jar
  networks:
    - app-network

1. WAS (Web Application Server)의 μ—­ν• 

Nginxκ°€ 정적인 νŒŒμΌμ„ μ²˜λ¦¬ν•˜κ±°λ‚˜ λ¬Έμ§€κΈ° 역할을 ν•œλ‹€λ©΄, Tomcat은 JSP(Java Server Pages) νŒŒμΌμ„ 읽어 μžλ°” λ‘œμ§μ„ μ‹€ν–‰ν•˜κ³  DBμ—μ„œ 데이터λ₯Ό 가져와 λŒ€λ¦¬λ‹˜κ»˜ 보여쀄 화면을 μ‹€μ‹œκ°„μœΌλ‘œ λ§Œλ“€μ–΄λ‚΄λŠ” 역할을 ν•©λ‹ˆλ‹€.

2. μ™ΈλΆ€ 라이브러리 연동

우리 μ„œλΉ„μŠ€κ°€ DB(PostgreSQL) 및 μΊμ‹œ(Redis)와 ν†΅μ‹ ν•˜κΈ° μœ„ν•΄ ν•„μˆ˜μ μΈ λ“œλΌμ΄λ²„λ“€μ„ lib 폴더에 직접 λ§€ν•‘ν•˜μ—¬ μ‚¬μš© μ€‘μž…λ‹ˆλ‹€.

  • PostgreSQL JDBC: DB 데이터 쑰회λ₯Ό μœ„ν•œ 닀리 μ—­ν• 
  • Jedis: Redisλ₯Ό ν†΅ν•œ μ„±λŠ₯ μ΅œμ ν™” 및 μ„Έμ…˜ 관리 보쑰

3. 운영 팁: 둜그 λͺ¨λ‹ˆν„°λ§

WAS λ‚΄λΆ€μ—μ„œ λ°œμƒν•˜λŠ” 였λ₯˜λ‚˜ λŒ€λ¦¬λ‹˜μ˜ 접속 흐름을 νŒŒμ•…ν•˜κΈ° μœ„ν•΄ μ‹€μ‹œκ°„ 둜그 확인은 ν•„μˆ˜μž…λ‹ˆλ‹€!

# μ‹€μ‹œκ°„ ν†°μΊ£ 둜그 확인
docker logs -f tomcat-was

---

πŸ’‘ κΉ€λΉ„μ„œμ˜ 운영 ν•œλ§ˆλ””: ν†°μΊ£ μ„€μ •(server.xml λ“±)을 λ³€κ²½ν–ˆμ„ λ•ŒλŠ” docker restart tomcat-was둜 μ»¨ν…Œμ΄λ„ˆλ₯Ό μž¬μ‹œμž‘ν•΄μ£ΌλŠ” 것이 κ°€μž₯ ν™•μ‹€ν•©λ‹ˆλ‹€. 🫑

λ‹€μŒ νŽΈμ—μ„œλŠ” 우리의 μ†Œμ€‘ν•œ 데이터 μ €μž₯μ†Œ, PostgreSQL 16에 λŒ€ν•΄ λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€. 🐘✨

← λͺ©λ‘μœΌλ‘œ λŒμ•„κ°€κΈ°