1. Application modernization (애플리케이션 현대화)의 정의

Application modernization is the refactoring, re-purposing or consolidation of legacy software programming to align it more closely with current business needs.
 - From https://searchcio.techtarget.com/definition/application-modernization
소프트웨어 현대화 또는 플랫폼 현대화라고도하는 레거시 현대화는 레거시 시스템을 현대 컴퓨터 프로그래밍 언어, 소프트웨어 라이브러리, 프로토콜 또는 하드웨어 플랫폼으로 변환, 재 작성 또는 이식하는 것을 말한다. - From 위키백과
  • 오늘날 기업들은 시장 속도와 고객 변화에 민감하게 응대하기 위해 빠르고 빈번하게 애플리케이션을 개발하고 배포하기 위한 아키텍처, 조직, 문화를 수립하고자 한다.
  • 오늘날의 애플리케이션은 수백만 명의 사용자에게 신속하게 확장되고 글로벌 가용성을 보장하며, 페타바이트급 데이터를 관리하고, 밀리초 단위로 응답해야 한다.
  • 새로운 아키텍처 패턴, 운영 모델 및 소프트웨어 전달 프로세스를 조합하여 애플리케이션을 현대화하고 구축해야 한다.

2. 애플리케이션 현대화를 위한 3가지 디자인 패턴

 1) 마이크로서비스 아키텍처 : 서비스들이 네트워크를 통해 서로 API로 통신 / 서비스는 독자적으로 업데이트하며, 서로 영향을 주지 않음 / 
                                                 다른서비스의 내부 구조를 알지 못해도 내 서비스 코드를 업데이트 할 수 있음. 
 2) 서버리스 기반 운영 모델 : 확장성 가용성 제공, 장애 복원력, 실행 시간만 과금, 관리/운영 불필요, 비즈니스 로직만 집중, 클라우드 네이티브 서비스 활용
 3) 데브옵스 자동화 배포 방식 : 소스 코드 저장소부터 패키지 빌드, 테스트, 배포 및 모니터링까지 전 과정에 대해 자동화! 

3. 기존의 인프라 및 애플리케이션 분석 후 요구사항에 가장 적합한 접근 방식 선택

 1) 모놀리스 컨테이너화 : 비용을 줄이고 운영을 간소화한다. (모놀리스에서 클라우드로 이관..)
 2) API를 통한 온프레미스 자산 노출 : API는 클라우드로 활성화하기 어려운 기존 자산을 사용할 수 있도록 지원한다.
 3) 마이크로서비스로 리팩토링 : 모놀리스를 배포 가능한 구성요소로 나눈다.
 4) 새로운 마이크로서비스 추가 : 점진적으로 혁신을 통해 빠른 비즈니스 성과를 달성한다.
 5) 모놀리스 억제 : 모놀리스가 점진적으로 사라진다.
     - 리팩토링 : 유지관리가 어려운 기존의 코드를 더 나은 새 코드로 부분별로 바꾸는 프로세스. 각 비즈니스의 기능을 점차적으로 바꿔 오래된 모놀리스를 억제.
                         애플리케이션을 마이크로서비스로 리팩토링하면 개발자 생산성이 향상되고 더 많은 코드를 신속하게 릴리스 할 수 있다.