Print
카테고리: [ Cloud Computing & MSA ]
조회수: 41553

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.  Monolith -> 컨테이너화 : 비용을 줄이고 운영을 간소화한다. (Monolith를 클라우드로 이관..)
  2.  API를 통한 온프레미스 자산 노출 : API는 클라우드로 활성화하기 어려운 기존 자산을 사용할 수 있도록 지원한다.
  3.  마이크로서비스로 리팩토링 : 모놀리스를 배포 가능한 구성요소로 나눈다.
  4.  새로운 마이크로서비스 추가 : 점진적으로 혁신을 통해 빠른 비즈니스 성과를 달성한다.
  5.  Monolith 억제 : 모놀리스가 점진적으로 사라진다.

리팩토링 : 유지관리가 어려운 기존의 코드를 더 나은 새 코드로 부분별로 바꾸는 프로세스. 각 비즈니스의 기능을 점차적으로 바꿔 오래된 모놀리스를 억제. 애플리케이션을 마이크로서비스로 리팩토링하면 개발자 생산성이 향상되고 더 많은 코드를 신속하게 릴리스 할 수 있다.


4. 주요 니즈에 대한 해결책

4.1. 니즈

  1. 각종 이벤트 시에 사용자 증가에 따른 부하 분산 필요
  2. 하드웨어 및 소프트웨어 EOS, 노후화되어 안정성뿐 아니라 신기술 적용 어려움
  3. 모놀리스 방식 환경 탈피
  4. 소스 배포 및 검증 관리 환경 노후화

4.2. 해결책

  1. 클라우드, 컨테이너 도입
  2. 최신 아키텍처 도입 (MSA, Scalable Database : Master-Replica 구조 등)
  3. 오픈 소스 소프트웨어 도입
  4. CI/CD 도입

4.3. Multigrained Architecture

Monolith, Microservice 각 장단점이 있기 때문에 혼합된 아키텍처를 구성하는 것도 방법이다.

  Monolith Microservice
장점 - 아키텍처가 직관적
- 모니터링/디버그 용이
- 민첩섭
- 개발/배포/확장 용이
단점 - 민첩성/확장성 떨어짐
- 변화에 대한 영향도가 큼
- 복잡도 증가
- 관리 어려움
- Hidden Cost
- 보안 위협