MSA_D6ToMSA_Architecture.jpg

실제 브라질의 운송회사에서 20년된 델파이 프로그램을 현대식 마이크로서비스 아키텍처로 전환한 사례를 바탕으로 진행한 세미나 자료입니다. 

 

 

당면 과제

브라질에서 가장 큰 로컬 운송회사에서 델파이6로 구축한 시스템을 15년간 회사의 매우 중요한 파트에서 운용해 왔습니다. 그간 회사는 크게 성장했지만, 클라이언트/서버 구조인 이 시스템으로는 더 이상 회사의 성장에 맞추어 확장하기 어려운 상황에 이르렀습니다.

 

 

시행 착오

2014년 이후 회사는 두 번에 걸쳐 델파이가 아닌 다른 기술로 완전히 교체하려는 시도를 했습니다. 한 번은 SAP로, 다른 한 번은 Java(자바)로 시도했으나, 두 프로젝트 모두 실패했습니다. 그 기간 동안 기존 시스템은 20살이 되었고, 세번째는 더 이상 실패하면 안 되는 다급한 상황이 되었습니다.

 

 

해결 방안 및 결과

2019년 새롭게 구축한 시스템은 유연하면서도 확장성있고, 견고하며, 비용까지 절감해주고 있습니다. 현대식 시스템이며, 마이크로서비스 아키텍처가 적용되었습니다. 도커(Docker), 쿠버네티스(Kubernetes), 데브옵스(DevOps) 원칙이 반영되었습니다. 

그리고 무엇보다 이 새 시스템은 델파이(Delphi)로 구축되었습니다.

 

 

이 영상을 통해 알 수 있는 내용

  • 왜, SAP와 Java 두 번의 재구축 프로젝트가 실패했을까?
  • 어떻게, 델파이 개발자 단 8명으로 구성된 팀만으로 외부 훨씬 더 큰 규모의 개발팀보다 빠르고 획기적인
    결과를 만들어 낼 수 있었을까?
  • 왜, 전환 프로젝트 비용이 시트릭스(Citrix) 비용 절감만으로도 충당되었을까?
  • (다른 시스템에서는 못했는데) 이 새로운 시스템은 유연하게 확장되고, 빠르게 개발될 수 있었습니다.
    아키텍처는 어떻게 되어 있을까?

 

이 영상을 통해 기존 시스템의 가치를 인식하고, 기존 시스템에서 마이그레이션 하는 것이 완전히 새로 구축하는 것보다 어떻게 그리고 얼마나 더 빠르고 더 안전한지를 확인할 수 있습니다.

 

시스템 아키텍처

해당 세미나에서 소개한 아키텍처를 조금 구체적으로 그려보았습니다.

이해하기 쉽도록 계층을 구분하고, 각 계층의 역할과 서비스 구성, 서비스들의 역할을 설명합니다.

MAS_Architecture_Devgear.jpg

 

해당 세미나의 아키텍처 중 시스템 아키텍처를 제외한 개발 도구와 배포 환경은 다음과 같습니다.

devops_deploy.png

 

사용된 기술

Access Layer

클라이언트 요청을 분산하고, 요청에 대한 서비스로 연결하는 게이트웨이 역할

Reverse Proxy & Load Balancer : REST API 경로에 따라 구현된 마이크로 서비스와 연결 요청 분산

HTTPS : 보안 프로토콜 지원

 

Business Layer

운용에 필요한 기능을 마이크로 서비스 기반으로 제공. 핵심적인 비지니스 로직이 포함되며 다른 서비스들과 연동해 운용

  • RAD Server : REST API 서비스를 손쉽게 개발할 수 있는 턴키방식 미들웨어 서버. 델파이, C++빌더로 개발

 

Persistance Layer

서비스 운용에 필요한 데이터를 제공하는 역할이다.

RDBMS, NoSQL : 마이크로 서비스는 서비스 분리와 함께 데이터 분리가 가능하다. 서비스 필요에 따라 RDBMS NoSQL 사용가능하다.

Data Grid(IMDG: In Memory Data Grid) : 일종의 메모리 클러스터. 여러 서버와 메모리를 연결 수십기가의 메모리 저장소를 만들고, 애플리케이션 서버에서 접근해 사용하는 방식

Message Queue : 비동기 요청 처리. 클라이언트 요청을 메시지 큐에 넣고 응답 다른 서비스에서 메시지 큐의 내용을 처리

  • Oracle - RDBMS
  • PostgreSQL - RDBMS
  • MongoDB - NoSQL / BigData
  • Redis - 메모리 기반 데이터 그리드. 서비스간 공유할 데이터를 메모리 기반으로 빠르게 조회 및 저장
  • RabbitMQ - 오픈소스 메시지 브로커. 서비스간 메시지를 큐잉하고 변경 시 이벤트를 받아 처리 가능

 

Analystics Layer

서비스 운용 발생하는 로그를 수집 분석하고, 서비스를 모니터링 장애 감지 역할

Log gathering / Analysis : 서비스들로 부터 로그를 수집, 저장, 분석 시각적으로 제공. Elastic(ELK) Stack 사용됨

Monitoring : 네트워크 서버 모니터링 장애 감지 알림

  • Logstash - 실시간 파이프라인 기능을 가진 데이터 수집 엔진
  • ElasticSearch - 분산형 RESTful 검색 및 분석 엔진
  • Kibana - ElasticSearch에 저장된 데이터를 검색 및 분석, 시각화 플랫폼
  • Zabbix - 네트쿼크 서비스, 서버 등을 감시, 추적 및 장애 알림
  • Grafana - 데이터를 시각화하여 효과적으로 데이터기반 의사결정 및 모니터링 가능
  • Prometheus - 이벤트 모니터링 및 경고. HTTP 풀 모델 사용이 특징

DevOps/Dev tooling

  • RAD Studio
  • Ranorex
  • docker
  • Sonar
  • Gitlab
  • Jenkins

 

Deployment environment

  • Ansible
  • Kubernetes
  • Ubuntu
  • Rancher
  • docker

 

자료들

  • 발표자료 PDF
  • 도커 파일(Dockerfiles) - 발표자의 예제 파일들
  • RAD서버 샘플 코드

이 모든 자료는 깃허브를 통해 확인할 수 있습니다 (클릭)

깃허브를 델파이에서 바로 불러와서 활용하는 방법도 체크하세요! (클릭)

 

 

다시보기

 

 

 

 

그레이드 마이그레이션 센터   델파이 최신 무료 평가판 다운로드

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 22612
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 21040
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 23099
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28912
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 30065
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 25411
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46364
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 182370
1043 데브기어 컴포넌트 컨버터 원리와 구조 설명 험프리 2019.10.11 1046
1042 엔터프라이즈 커넥터로 VCL 애플리케이션에서 '구글 시트' 데이터 조회 및 편집하기 험프리 2019.10.04 625
1041 엔터프라이즈 커넥터 설치하기 file 험프리 2019.10.01 686
1040 엔터프라이즈 커넥터로 'VCL 애플리케이션에서 엑셀 데이터 가져오기&편집하기' file 김원경 2019.09.27 1036
1039 이 달의 기술자료 - 2019년 10월 험프리 2019.09.27 410
1038 [RAD서버] JSON 처리 단순화 컴포넌트 활용 - TEMSDataSetResource 험프리 2019.09.27 824
1037 [오프라인 세미나] 델파이 마이그래이션 - 실전 사례로 살펴보는 소프트웨어 현대화 전략 [1] 관리자 2019.09.27 688
1036 VCL 앱, 윈도우 10용으로 현대화하기 관리자 2019.09.25 559
1035 서베이몽키(SurveyMonkey)를 프로젝트에 연동하기 관리자 2019.09.20 798
1034 "모든" 데이터를 프로젝트에 연동하기 - 파이어닥(FireDAC) 엔터프라이즈 커넥터 활용 관리자 2019.09.19 528
1033 3가지 API 이야기: VCL에서 WinAPI, COM&ShellAPI, WinRT 활용하기 관리자 2019.09.18 808
1032 리눅스용 앱에 다양한 스타일 적용하기 (FMX 스타일들을 리눅스 앱에도!) 관리자 2019.09.17 568
1031 밝은 톤의 사용자 친화적인 디자인을 찾고있다면 - 푸에르토 리코(Puerto Rico) FMX 스타일 관리자 2019.09.17 613
1030 과감하면서도 볼드한 효과를 주고 싶다면 - Ruby Graphite FMX 스타일 관리자 2019.09.17 569
1029 그라데이션이 적용된 멋진 스타일을 적용하고 싶다면 - 스텔라(Stellar) FMX 스타일 관리자 2019.09.17 667
1028 현대화 작업, 바로 지금이 골든타임입니다! 관리자 2019.09.11 421
» 20년된 델파이 앱을 현대식 마이크로서비스 아키텍처로 전환하기 관리자 2019.09.11 1523
1026 [따라하기] Advanced 델파이 UI 작성하기 file 험프리 2019.09.11 2291
1025 [10.3 리오][업데이트 2] 델파이 리눅스 클라이언트 애플리케이션 지원 관리자 2019.09.10 440
1024 [10.3 리오][업데이트 2] 멋지게 업그레이드된 VCL 품질 관리자 2019.09.10 403