[IT Big Trend] Application Modernization, 어플 현대화
애플리케이션 현대화
기존 IT 인프라, 플랫폼, 아키텍처 등 레거시를
최신 기술을 사용해 비즈니스 요구사항*에
맞춰 구축/개선하는 것
*속도, Agility, Intelligence
MSA, Microservie Archiecture
독립적인 배포 및 확장이 가능한 단위로
마이크로 서비스를 지원하는 아키텍처,
: 마이크로 서비스를 고객의 MSA 적용목적에
최적화된 단위로 도출하고, 설계하는 것이 핵심
MSA 적용목적
1) Agility : 고객의 Biz 요구사항을 민첩하게 반영
2) Resilience : 다른 시스템의 장애로 인해
전체 시스템의 장애로 전이되지 않도록 하는 것
3) Responsive: 서버는 언제든 멈춰더라도, 서비스는 멈추지 않고
사용자에게 응답할 수 있도록 하는 것
DesOps, Development + Operation
SW 제공속도를 높이고, 서비스 안정성을 개선하기 위한 방법론
: 개발, 운영 간의 목표 및 업무방식의 충돌을 해결하기 위해
공유 소유권을 구축하여, 신속, 지속적인 SW개선을 하고
새로운 기능을 추가하거나 버그를 보완하는 것
이를 위해
쉬운 커뮤니케이션 도구
: Confluence, Jira 등 개발, 운영간 의사소통 지원
빠르고, 지속적인 SW개선,
: Git Repository를 코드베이스로 사용해 소스코드의
효율적인 관리와 프로젝트 현황 파악을 도움
안정적인 반영
: CICD Pipleline으로 Git에 반영된 변경사항이 빠르고,
지속적인 운영환경까지 배포되고, 테스트 자동화가 진행됨
*DORA(DevOps Research and Assessment)
: DevOps 수준을 측정/개선하는 4가지 주요 성과지표
Lead Time for changes 관점에서 볼때,
변경에 소요되는 시간을 단축하기 위해
Hand-off 최소화 및 수작업의 자동화가 중요함
- 테스트 단계가 가장 큰 영향을 줌
: 변경사항이 기존 서비스 기능에 영향 주는지
or 신규 기능의 정상적인 작동 확인 등을 위해
별도 단계별 테스트 코드를 개발하고,
변경 작업마다 자동으로 검증하여 시간 단축함
- 인프라 관련 내용이 오래 걸림
: 인프라 조직과 애플리케이션 조직이 분리된 경우가 기본이라,
요청시 처리 대기하는 Hand-off 가 발생하고 시간 낭비
▷ Infrastructure as Code를 적용해,
애플리케이션 배포 시 필요한 인프라 자원을
직접 생성 및 변경하여 변경에 걸리는 시간을 단축함
Agile 개발방식
복잡한 프로젝트를 단순하고 작은 반복적인 주기(Sprint)로 나눠,
점진적으로 제품을 개발하는 기법 ▶ 잦고 빠른 협력, 피드백이 핵심
- Digital Transformation을 효과적으로 하기 위한 방법론
- 조직/부서간 경계를 허물고 빠른 의사결정, 신속한 업무 진행방법
- 고객가치 극대화를 위한 의사결정을 내리기 위한 가치, 원칙
- Fast Feedback & Fast Flow를 기반으로 한 Prototype, 학습 방법
Agile 역할자, 프로젝트 Scrum Team Building으로 역할 정의
1) Product Owner
- 고객 요구사항 대표 식별자
- Product Backlog를 지속적으로 관리하고 우선순위를 부여
2) Scrum Master
- Sprint 기간에 다양한 미팅을 주관, Facilitator
- 외부 영향으로부터 팀을 보호하거나, 이슈/장애를 해결, 지원함
- Servant Leadership을 갖춘 PM, PL이 수행
3) Scrum Team
- Product를 구현, 실행하는 책임, 자율, 주도권 보유
- 7±2명 규모로 구성
- 주요 의사결정, 진행과정을 전 팀원과 공유함