๐Ÿ“ถ ๋„คํŠธ์›Œํฌ - WEB_SERVICE 4ํƒ„

__Y0Connell__ยท2024๋…„ 6์›” 13์ผ

CS_STUDY

๋ชฉ๋ก ๋ณด๊ธฐ
18/19

์œ ํˆฌ๋ธŒ ๋„๋„ํ•œ ๊ฐœ๋ฐœ์ž๋‹˜ ๊ฐ•์˜ ๋ณต์Šต ๋ฐ ์ •๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธ€

  • WAS, JVM ๊ทธ๋ฆฌ๊ณ  RESTful API

๋„๋„์œ ํˆฌ๋ธŒ

JVM์— ๊ด€ํ•˜์—ฌ

CPU์—์„œ ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ ํ›„ ์ปค๋„์ธต์—์„œ CPU๊ฐ€ ์‚ฌ์šฉ์ž ์• ํ”Œ๋ ˆ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š”๋ฐ,
์ปค๋„ ์ธต์—๋Š” ์šด์˜ ์ฒด์ œ๊ฐ€ ์žˆ๊ณ , ์šด์˜ ์ฒด์ œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ CPU ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

๋”ฐ๋ผ์„œ ํ•ด๋‹น ๊ณ„์ธต ๊ตฌ์กฐ์— ๋”ฐ๋ฅด๋ฉด, 
์ฝ”๋“œ ์‹คํ–‰์€ ์šด์˜ ์ฒด์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ๋ฐ›๊ฒŒ ์—†๊ฒŒ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. 

ํ•˜์ง€๋งŒ, ์šด์˜ ์ฒด์ œ๋งˆ๋‹ค ๋‹ค ๋”ฐ๋กœ ๋‚ด๋ถ€๋กœ์ง์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด๋‚˜๋„ ํ”ผ๊ณคํ•œ ์ผ.. 

๊ทธ๋ž˜์„œ JAVA๋Š” CPU๋ฅผ USER ๋ชจ๋“œ ๋‹จ์œผ๋กœ ์˜ฎ๊ฒจ, ์šด์˜์ฒด์ œ์˜ ์˜ํ–ฅ๋ ฅ์—์„œ ๋ฒ—์–ด๋‚˜๊ณ ์ž ํ–ˆ๋‹ค. 

๊ทธ๋ž˜์„œ ์ƒ๊ฒจ๋‚œ ๊ฒƒ์ด ๋ฐ”๋กœ JVM

JVM : Java Virtual Machine USER ์ธต์—์„œ CPU๋ฅผ ๊ฐ€์ƒ์œผ๋กœ ๋งŒ๋“  ๊ฒƒ

Java Byte Code์™€ JVM (Java Virtual Machine)
Java๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ฐ”์ดํŠธ ์ฝ”๋“œ(๊ธฐ๊ณ„์–ด) ๋กœ ๋ณ€ํ™˜๋˜๊ณ  ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” JVM์—์„œ ์‹คํ–‰๋œ๋‹ค.
JVM์€ ์šด์˜์ฒด์ œ์™€ ํ•˜๋“œ์›จ์–ด์— ์ข…์†๋˜์ง€ ์•Š๊ณ  ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.


Framework

๋ฐฑ์•ค๋“œ ๊ฐœ๋ฐœ์ž๋Š” S/W ๋ถ€๋ถ„์—์„œ NODE.JS ๋“ฑ์„ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœ์„ ํ•˜๋Š”๋ฐ, ๊ทธ๊ฒŒ ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ์ทจํ–ฅ๊ฒƒ ๊ฐœ๋ฐœํ•˜๊ฒŒ ํ•˜๊ธฐ ๋ณด๋‹ค๋Š”
๊ทธ๋ž˜๋„ ์–ด๋А์ •๋„ ํ‹€์„ ์žก์•„์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ ํŽธ๋ฆฌ์„ฑ์„ ์ฃผ๊ธฐ ์œ„ํ•ด
ํ‹€์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ทธ๊ฒŒ ๋ฐ”๋กœ Framework (Spring Boot)์ด๋‹ค.

Framework (Spring Boot)

  • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ ๋ชจ์Œ / Spring Boot๋Š” Java ๊ธฐ๋ฐ˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์Šคํ”„๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์คŒ
  • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ๋ฅผ ์žก์•„์ฃผ๊ณ , ๊ณตํ†ต์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณต

๋ฏธ๋“ค์›จ์–ด (Middleware)

  • ๋ฏธ๋“ค์›จ์–ด๋Š” WAS๊ฐ€ ๋‹ค์–‘ํ•œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์–ธ์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•จ
  • ๋ฏธ๋“ค์›จ์–ด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์„ธ์…˜ ๊ด€๋ฆฌ, ๋ณด์•ˆ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

๋ฏธ๋“ค์›จ์–ด์˜ ์—ญํ• ๊ณผ ๊ธฐ๋Šฅ

  1. ํ†ต์‹  ๊ด€๋ฆฌ

    • ๋ฏธ๋“ค์›จ์–ด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ ์ ˆํžˆ ๋ผ์šฐํŒ…ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋ณ€ํ™˜ํ•˜์—ฌ ์–‘์ชฝ์ด ์›ํ™œํ•˜๊ฒŒ ์ƒํ˜ธ์ž‘์šฉ ๋„์›€
    • ์˜ˆ: HTTP ์š”์ฒญ/์‘๋‹ต, SOAP, RESTful API
  2. ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ’€๋ง, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๋“ฑ์„ ํฌํ•จ
    • ์˜ˆ: JDBC, Hibernate
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๊ธฐ๋Šฅ

    • WAS(Web Application Server)์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ณ , ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
    • ์˜ˆ: Tomcat, JBoss, WebSphere
  4. ์„œ๋น„์Šค ํ†ตํ•ฉ

    • ์„œ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”์‹œ์ง€ ํ, ์„œ๋น„์Šค ๋ฒ„์Šค ๋“ฑ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง
    • ์˜ˆ: RabbitMQ, Apache Kafka
  5. ๋ณด์•ˆ ๊ด€๋ฆฌ

    • ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ, ์‚ฌ์šฉ์ž์™€ ์‹œ์Šคํ…œ์˜ ์•ˆ์ „ํ•œ ์ ‘๊ทผ์„ ๋ณด์žฅ
    • ์˜ˆ: OAuth, JWT, SSL/TLS
  6. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ

    • ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ์‹œ์ผœ ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๋ฅผ ๊ท ํ˜• ์žˆ๊ฒŒ ์œ ์ง€ํ•˜๊ณ , ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ
    • ์˜ˆ: Nginx, HAProxy
  7. ์„ธ์…˜ ๊ด€๋ฆฌ

    • ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜์—ฌ, ์ง€์†์ ์ธ ์‚ฌ์šฉ์ž ์ƒํƒœ๋ฅผ ์œ ์ง€
    • ์˜ˆ: Redis, Memcached
  8. ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊น…

    • ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
    • ์˜ˆ: ELK Stack (Elasticsearch, Logstash, Kibana), Prometheus, Grafana

๋ฏธ๋“ค์›จ์–ด์˜ ์˜ˆ์‹œ

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„

    • Apache Tomcat: Java ์„œ๋ธ”๋ฆฟ๊ณผ JSP ์‹คํ–‰์„ ์œ„ํ•œ ์›น ์„œ๋ฒ„
    • JBoss EAP: Java EE ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์„œ๋ฒ„
  2. ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค

    • RabbitMQ: AMQP ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค
    • Apache Kafka: ๋ถ„์‚ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ
  3. API ๊ฒŒ์ดํŠธ์›จ์ด

    • Kong: ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ API ๊ฒŒ์ดํŠธ์›จ์ด
    • API Gateway (AWS): AWS์˜ ๊ด€๋ฆฌํ˜• API ๊ฒŒ์ดํŠธ์›จ์ด
  4. ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ ํ”Œ๋žซํผ

    • Apache Camel: ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ๊ณผ ๊ธฐ์ˆ  ๊ฐ„์˜ ๋ผ์šฐํŒ…๊ณผ ์ค‘์žฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ†ตํ•ฉ ํ”„๋ ˆ์ž„์›Œํฌ
    • MuleSoft: API์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ†ตํ•ฉ์„ ์œ„ํ•œ ํ”Œ๋žซํผ

์ถ”๊ฐ€

Node.js, JSP, PHP, ASP

  • ์ด๋“ค์€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์–ธ์–ด ๋˜๋Š” ํ”Œ๋žซํผ
    ๊ฐ๊ฐ JavaScript(Node.js), Java(JSP), PHP, Microsoft์˜ ๊ธฐ์ˆ (ASP)์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ
  • Node.js๋Š” JavaScript ๋Ÿฐํƒ€์ž„์œผ๋กœ, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅ
  • JSP๋Š” Java ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŒ… ๊ธฐ์ˆ ๋กœ, ๋™์ ์œผ๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑ
  • PHP๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋กœ, ์ฃผ๋กœ ์›น ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ
  • ASP๋Š” Microsoft์˜ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๊ธฐ์ˆ 
profile
๋˜๋Š”๊ฑด ๋‹ค ํ•˜๊ธฐ / ํ•˜๋Š”๊ฑด ๋‹ค ๋˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€