SlideShare a Scribd company logo
점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정
✔
✔ (customizing)
✔ , 5
✔ (Amazon Web Service)
legacy.php {
HTML
+= CSS
+= JAVASCRIPT
+= PHP
+= SQL
}
점진적인 레거시 웹 애플리케이션 개선 과정
STRANGLER FACADE
LEGACY
MODERN
STRANGLER FACADE
MODERN
LEGACY
MODERN
STRANGLER FACADE




Backend
Frontend
Embedded servlet containers(undertow.io)
jOOQ 3.xSpring MVC 4.x
Spring Boot 1.5.x, Spring Framework 4.x, Spring Cloud AWS 1.2.x

BackendAWS Elastic Beanstalk / JVM(Java 1.8)
Presentation Application
Business (Domain)
Data Access

Backend
Frontend







Backend
Frontend
RPC Stub RPC Server
SHARED
LIBRARY
HTTP Client HTTP Server
- (RESOURCE) - URI
- (Verb) - HTTP Method
- (Representations)
TWELVE-FACTOR APP METHODOLOGY
.
.
.
.
, , .
(Codebase): .
(Dependencies): .
(Config): .
(Backing services): .
, , (Build, Release, Run): , .
(Processes): .
(Port binding): .
(Concurrency): .
(Disposability): .
/ (Dev/Prod parity): , .
(Logs): .
(Admin Process): (admin/management) .
Backend
Frontend



function getUsableMileage(){
if (FeatureToggle::create()->isEnable(FeatureToggle::USE_BE_MILEAGE)) {
// Backend
}
//
return $usable_mileage;
}
https://martinfowler.com/articles/feature-toggles.html


API GATEWAY
Backend
Frontend



점진적인 레거시 웹 애플리케이션 개선 과정
Eureka Client
(service discovery)
Ribbon
(load balancer)
Zuul Proxy
(edge service)
Eureka Server
Hystrix Dashboard,
Turbine
Hystrix

(circuit breaker)
http://woowabros.github.io/experience/2017/08/21/hystrix-tunning.html
점진적인 레거시 웹 애플리케이션 개선 과정
http://woowabros.github.io/experience/2018/06/07/vue-story-of-baminchan.html

API GATEWAY
Backend
Frontend
. .
legacy.php {
require_once '/common/config.php';
require '/common/init.php';
include 'header';
include 'view';
include 'footer';
}
Frontend

API GATEWAY

API GATEWAY

API GATEWAY
babel(ES6), sass, webpack
Node.js v8.x
http-proxy, requestExpress.js, Handlebars
Vue.js v2.x axios
gradle, babel(ES6), sass, webpack
Java 1.8, Node.js v8.x
Spring Cloud NetflixSpring MVC, Thymeleaf
Vue.js v2.x axios
Spring Boot 1.5.x
babel(ES6), sass, webpack
Node.js v8.x
http-proxy, requestExpress.js, Handlebars
Vue.js v2.x axios
gradle, babel(ES6), sass, webpack
Java 1.8, Node.js v8.x
Spring Cloud NetflixSpring MVC, Thymeleaf
Vue.js v2.x axios
Spring Boot 1.5.x
babel(ES6), sass, webpack
Node.js v8.x
http-proxy, requestExpress.js, Handlebars
Vue.js v2.x axios
gradle, babel(ES6), sass, webpack
Java 1.8, Node.js v8.x
Spring Cloud NetflixSpring MVC, Thymeleaf
Vue.js v2.x axios
Spring Boot 1.5.x
https://github.com/arawn/continual-improve-legacy-web
ORDER
SYSTEM
[ WEB ]

USER-SERVICE
API GATEWAY
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS




MDM
SYSTEM[ WEB ]

BACK-OFFICE
점진적인 레거시 웹 애플리케이션 개선 과정
ORDER
SYSTEM
[ WEB ]

USER-SERVICE
API GATEWAY
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS




MDM
SYSTEM[ WEB ]

BACK-OFFICE
ORDER
SYSTEM
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS




MDM
SYSTEM
local.baeminchan.com
dev.baeminchan.com
test.baeminchan.com
staging.baeminchan.com
production.baeminchan.com
local.baeminchan.com
dev.baeminchan.com
test.baeminchan.com
staging.baeminchan.com
production.baeminchan.com
Application
Code
https://12factor.net/config
└── resources
├── application.yml #
├── application-local.yml #
├── application-dev.yml #
├── application-test.yml #
├── application-staging.yml #
├── application-production.yml #
└── application-ec2.yml # AWS EC2
> java -jar application.jar --spring.profiles.active=dev,ec2
+ OS environment variables (AWS Elastic Beanstalk) {
export DB_USERNAME="order_service"
export DB_PASSWORD="7%wo9;ttArRYMfYp"
}
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
AWS Elastic Beanstalk
{ WEB UI }
AWS EC2
{ SSH }
AWS LAMBDA
{ WEB UI }
WEB
APP
BATCH
APP
SERVERLESS
APP
https://projects.spring.io/spring-cloud/
SERVICE#1 Config Server

SERVICE#2
SERVICE#3
Config Repository
Config Client
Config Client
Config Client
SERVICE#1 Config Server

Config Repository
Config Client
└── resources
├── application.yml # Spring Boot
└── bootstrap.yml # Spring Cloud
> service#1.jar
spring:
application.name: application
cloud.config.uri: https://config.arawn.io
Service discovery and configuration management with Apache Zookeeper.
Service discovery and configuration management with Hashicorp Consul.
Centralized external configuration management backed by a git repository. The
configuration resources map directly to Spring `Environment` but could be used
by non-Spring applications if desired.
Consul Server
(Cluster)
Consul Server
(Cluster)
SERVICE#1 Consul Server
(Cluster)

SERVICE#2
SERVICE#3
Git Repository
Consul Client
Consul Client
Consul Template
Jenkins
application.yml
https://www.consul.io
DNS
(load
balancer)
https://github.com/hashicorp/consul-template
Consul Server
(Cluster)
Consul Server
(Cluster)
SERVICE#1 Consul Server
(Cluster)

SERVICE#2
SERVICE#3
Git Repository
Consul Client
Consul Client
Consul Template
Jenkins
application.yml
DNS
(load
balancer)
datasource:
username: '{cipher}65794a6492kfc627782d59534d4845355167'
password: '{cipher}6575f2d938928525976712e6d7a679616641'
AWS
Key Management Service
AWS LAMBDA
Consul Server
(Cluster)
SERVICE#1

Git Repository
Consul Client Jenkins
application.yml
DNS
(load
balancer)
ORDER
SYSTEMUSER SERVICE
API GW
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS


MDM
SYSTEMBACK-OFFICE
SCM
SYSTEM
ORDER
SYSTEMUSER SERVICE
API GW
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS


MDM
SYSTEMBACK-OFFICE
SCM
SYSTEM
점진적인 레거시 웹 애플리케이션 개선 과정
✔ (strangler patterns)
✔ (strangler application)
✔ Refactoring a Monolith into Microservices
✔ API
✔ Pattern: API Gateway / Backend for Front-End
✔ Netflix Zuul : Importance of Reverse Proxy in Microservices Architecture
✔ Cloud Native Java
✔ The Twelve-Factor app (12 )

More Related Content

PDF
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
PDF
우아한 모노리스
PDF
이벤트 기반 분산 시스템을 향한 여정
PDF
[수정본] 우아한 객체지향
PDF
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
PPTX
Jenkins tutorial
PPTX
Introduction to Django Rest Framework
PDF
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
우아한 모노리스
이벤트 기반 분산 시스템을 향한 여정
[수정본] 우아한 객체지향
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Jenkins tutorial
Introduction to Django Rest Framework
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중

What's hot (20)

PDF
A Hands-on Introduction on Terraform Best Concepts and Best Practices
ODP
Introduction to ReactJS
PPTX
Maven
PDF
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
PDF
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
PDF
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
PDF
Spring boot introduction
PDF
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
PDF
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
PDF
농심 그룹 메가마트 : 온프레미스 Exadata의 AWS 클라우드 환경 전환 사례 공유-김동현, NDS Cloud Innovation Ce...
PDF
NodeJS for Beginner
PPTX
Automation Testing by Selenium Web Driver
PPTX
React Hooks
PDF
Introduction to thymeleaf
PDF
자바 서버 애플리케이션 아키텍처 안티 패턴
PDF
우아한 객체지향
PDF
⼤語⾔模型 LLM 應⽤開發入⾨
PDF
Selenium cheat sheet
PDF
도메인 주도 설계의 본질
PDF
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...
A Hands-on Introduction on Terraform Best Concepts and Best Practices
Introduction to ReactJS
Maven
AWS Summit Seoul 2023 | 100만명이 사용하는 GenerativeAI 이루다를 만들면서 배운 것 : 스캐터랩의 AWS 활용법
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
Spring boot introduction
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
농심 그룹 메가마트 : 온프레미스 Exadata의 AWS 클라우드 환경 전환 사례 공유-김동현, NDS Cloud Innovation Ce...
NodeJS for Beginner
Automation Testing by Selenium Web Driver
React Hooks
Introduction to thymeleaf
자바 서버 애플리케이션 아키텍처 안티 패턴
우아한 객체지향
⼤語⾔模型 LLM 應⽤開發入⾨
Selenium cheat sheet
도메인 주도 설계의 본질
컨테이너 및 서버리스를 위한 효율적인 CI/CD 아키텍처 구성하기 - 현창훈 데브옵스 엔지니어, Flex / 송주영 데브옵스 엔지니어, W...
Ad

Similar to 점진적인 레거시 웹 애플리케이션 개선 과정 (20)

PPTX
Micro services vs hadoop
PDF
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
PDF
Spring Cloud Servicesの紹介 #pcf_tokyo
PDF
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
PPTX
Microservices chassis
PPTX
Running your Spring Apps in the Cloud Javaone 2014
PDF
Pivotal microservices spring_pcf_skillsmatter.pptx
PDF
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
PDF
Simplify Cloud Applications using Spring Cloud
PPTX
Spring ing apps on amazon web services
PDF
Quality control in a cloudy world
PDF
Developing Resilient Cloud Native Apps with Spring Cloud
PPTX
Intro to Spring Boot and Spring Cloud OSS - Twin Cities Cloud Foundry Meetup
PPTX
Operating a High Velocity Large Organization with Spring Cloud Microservices
PDF
Greach 2019 - Creating Micronaut Configurations
PDF
Microservices - not just with Java
PDF
Arquitecturas de microservicios - Medianet Software
PPTX
Building microservices sample application
PDF
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
PDF
Microservices architecture: practical aspects
Micro services vs hadoop
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Spring Cloud Servicesの紹介 #pcf_tokyo
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Switzerl...
Microservices chassis
Running your Spring Apps in the Cloud Javaone 2014
Pivotal microservices spring_pcf_skillsmatter.pptx
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Jforum S...
Simplify Cloud Applications using Spring Cloud
Spring ing apps on amazon web services
Quality control in a cloudy world
Developing Resilient Cloud Native Apps with Spring Cloud
Intro to Spring Boot and Spring Cloud OSS - Twin Cities Cloud Foundry Meetup
Operating a High Velocity Large Organization with Spring Cloud Microservices
Greach 2019 - Creating Micronaut Configurations
Microservices - not just with Java
Arquitecturas de microservicios - Medianet Software
Building microservices sample application
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Microservices architecture: practical aspects
Ad

More from Arawn Park (14)

PDF
우린 같은 곳을 바라 보고 있나요?
PDF
코틀린 멀티플랫폼, 미지와의 조우
PDF
kotlinx.serialization
PDF
#살아있다 #자프링외길12년차 #코프링2개월생존기
PDF
Introduction to Kotlin
PDF
Reactive Web - Servlet & Async, Non-blocking I/O
PDF
Spring framework 4.x
PDF
씹고 뜯고 맛보고 즐기는 스트림 API
PDF
Spring framework 3.2 > 4.0 — themes and trends
PDF
overview of spring4
PDF
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
PDF
Resource Handling in Spring MVC
PDF
[Spring Camp 2013] Java Configuration 없인 못살아!
PDF
Vagrant와 chef로 개발서버 구축 자동화하기
우린 같은 곳을 바라 보고 있나요?
코틀린 멀티플랫폼, 미지와의 조우
kotlinx.serialization
#살아있다 #자프링외길12년차 #코프링2개월생존기
Introduction to Kotlin
Reactive Web - Servlet & Async, Non-blocking I/O
Spring framework 4.x
씹고 뜯고 맛보고 즐기는 스트림 API
Spring framework 3.2 > 4.0 — themes and trends
overview of spring4
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
Resource Handling in Spring MVC
[Spring Camp 2013] Java Configuration 없인 못살아!
Vagrant와 chef로 개발서버 구축 자동화하기

Recently uploaded (20)

PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
top salesforce developer skills in 2025.pdf
PDF
System and Network Administraation Chapter 3
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
medical staffing services at VALiNTRY
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPT
Introduction Database Management System for Course Database
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
L1 - Introduction to python Backend.pptx
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Nekopoi APK 2025 free lastest update
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Understanding Forklifts - TECH EHS Solution
Operating system designcfffgfgggggggvggggggggg
Design an Analysis of Algorithms II-SECS-1021-03
top salesforce developer skills in 2025.pdf
System and Network Administraation Chapter 3
Design an Analysis of Algorithms I-SECS-1021-03
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
medical staffing services at VALiNTRY
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Upgrade and Innovation Strategies for SAP ERP Customers
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Introduction Database Management System for Course Database
Adobe Illustrator 28.6 Crack My Vision of Vector Design
L1 - Introduction to python Backend.pptx
2025 Textile ERP Trends: SAP, Odoo & Oracle
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Nekopoi APK 2025 free lastest update

점진적인 레거시 웹 애플리케이션 개선 과정