상명대학교 / 서광규 교수


 

 

마이크로서비스의 식별 및 정의는 마이크로서비스 아키텍처 기반 시스템의 가장 중요한 측면 중 하나이다. 마이크로서비스와 그 경계를 적절하게 식별하는 방법에는 여러 가지가 있다.

 

그러나 이러한 접근 방식은 일반적으로 소프트웨어 설계자가 수행한다.

즉, 시스템 설계의 전반적인 성공은 전체 시스템에 대한 기술, 능력 및 이해에 달려 있다.

이 포괄적인 작업은 상당히 까다로울 수 있으므로 감독 및 오류의 여지가 있다. 운 좋게도 매일 새로운 기술이 등장하고 이러한 기술의 새로운 용도가 등장하여 어려운 작업이 조금 더 쉬워진다.

본 고에서는 소프트웨어 요구 사항을 분석하고 마이크로서비스를 식별하기 위해 널리 사용되는 ChatGPT 대규모 언어 모델을 활용하는 방법을 살펴본다.

 

챗GPT는 내 질문에 답변해 주는 인공지능 채팅 서비스이다.

테슬라의 일론 머스크, 와이콤비네이터 창업자인 샘 알트만, 링크드인 공동창업자인 리드 호프먼 등 IT업계의 거물들이 뭉쳐 설립한 세계 최대의 인공지능 연구소인 오픈AI 사에서 개발했다. 작동방식은 여타의 챗봇과 유사하다.

질문을 입력하면, 대답이 돌아오는데 성능이 우수하다. 특정 주제를 던져놓고 글의 개요를 짜달라고 할 수도 있고, 긴 분량의 글을 요약해달라고 요청할 수도 있다.

상황을 설명하면 이메일도 작성해 주고 코드를 짜달라고 요청할 수도 있다. 구글 등 기존의 검색 서비스가 정보를 보여주는 대서 그쳤다면, 챗GPT는 정보를 순식간에 정제된 텍스트로 만들어준다.

 

본 고에서는 마이크로서비스 식별을 위한 ChatGPT 적용한 세 가지 사례를 소개하는데, 소프트웨어 요구 사항 분석에 GPT를 사용하는 것이 유용할 수 있지만 단점 때문에 주의해서 사용해야 함을 보여준다.

 




 

1. 서론

마이크로서비스 아키텍처는 응집력이 높고 느슨하게 결합된 서비스로 구성된 분산 소프트웨어 시스템 아키텍처이다. 마이크로서비스 아키텍처는 설계 및 구현이 매우 복잡할 수 있다.

이 아키텍처로 시스템을 설계할 때 직면하는 첫 번째 과제 중 하나는 마이크로서비스의 경계를 정의하는 것이다. 잘못 설계된 마이크로서비스는 시스템 성능에 부정적인 영향을 미칠 수 있으며, 이는 높은 상호 의존성, 시스템의 내결함성 부족, 책임 중복 등으로 이어질 수 있다.

마이크로서비스의 경계를 결정하려면 시스템에 대한 지식과 이해가 필요하다. 이는 일반적으로 이러한 시스템이 매우 복잡한다는 점을 염두에 두는 것이 어려울 수 있다.

실제 연구에 따르면 이 프로세스는 오류가 발생하기 쉬우며 일반적으로 올바른 프로세스를 수행하려면 여러 번의 반복이 필요하다. 이 작업은 일반적으로 소프트웨어 설계자와 도메인 전문가가 수행한다.

즉, 솔루션의 품질은 이들의 기술과 고객 요구 사항에 대한 이해에 따라 달라진다. 최근 등장해 큰 영향을 미친 기술 중 하나가 ChatGPT이다. 이 기술을 활용하는 새로운 방법이 매일 발견되고 있다.

ChatGPT의 기능은 디버깅, 생성 및 테스트 코드, 코드 품질 개선, 리팩토링, 소프트웨어 설계 등과 같은 소프트웨어 엔지니어링의 다양한 영역에서 탐색된다. 효율성을 높이기 위해 다양한 프롬프트 엔지니어링 기술과 프롬프트 카탈로그가 제안되었다.

예를 들면 요구 사항 분석에서 기능적 요구 사항과 비기능적 요구 사항을 성공적으로 분리하고 자세한 사용 사례 사양을 생성할 수 있었던 소프트웨어 개발 주기에서 ChatGPT의 기능을 검사한다.

도메인 모델링에서는 도메인 개념과 속성, 관계를 식별할 수 있었다. 디자인 모델링에서는 상세한 디자인 클래스와 시퀀스 다이어그램을 제공한다.

 

본 고에서는 ChatGPT와 같은 대규모 언어 모델을 탐색하여 요구 사항을 분석하고 마이크로서비스 아키텍처에 사용 가능한 설계를 제공하는 것이다.

여기서는 GPT를 사용하여 마이크로서비스를 식별하고 시스템 요구 사항 및 제공된 지침에 따라 적절한 권장 사항을 제공할 수 있는지 살펴보기로 한다.

 

ChatGPT는 OpenAI에서 개발한 LLM(대형 언어 모델)이다. 현재 ChatGPT는 엄청난 양의 텍스트 데이터를 학습하는 자연어 처리 모델인 GPT-3.5 아키텍처(Generative Pre-trained Transformer)를 기반으로 GPT4가 서비스 되고 있다.

2022년 11월 22일부터 무료로 사용할 수 있는데, ChatGPT는 약 두 달 만에 사용자 1억 명을 달성했다.

 

대형 언어 모델은 자연어의 통계적 패턴을 학습하도록 설계된 확률 모델이다.

이러한 모델은 사용 가능한 대량의 텍스트 데이터에 대해 사전 학습되었다. 그들의 아키텍처는 인공 신경망, 특히 2017년에 발명된 Transformer 모델을 기반으로 한다.

Transformer 모델은 자연어 문맥 이해에 좋은 것으로 입증되었다. Transformer 기반 모델은 인코더-디코더 아키텍처를 사용한다.

인코더는 숫자 표현으로 텍스트를 인코딩하는 반면 디코더는 이러한 표현을 가져와 다시 텍스트로 디코딩한다. GPT(Generative Pre-trained Transformer)는 새로운 텍스트를 생성하는 디코더이다.

 

필요한 기능에 대한 설명을 기반으로 마이크로서비스를 이해하고 식별하는 GPT의 기능을 결정하기 위해 세 가지 다른 시스템에 대한 설명이 챗봇에 제공된다. 그런 다음 각 솔루션을 분석한다.

 

 




 

 

2. 마이크로서비스 식별을 위한 ChatGPT 적용 사례

본 장에서는 마이크로서비스 식별을 위한 ChatGPT 적용의 몇 가지 사례를 제시한다. 각 사례에 대해 Chat GPT에 몇 가지 추가 지침이 제공되고 결과가 제시되고 분석된다.

각 사례에 대해 두 번의 채팅이 이루어졌다. 하나는 시스템에 대한 전체 설명이 한 번에 제공되었고 GPT는 잠재적인 마이크로서비스를 식별하도록 지시받았으며, 다른 하나는 시스템 설명이 부분적으로 제공되었다.

이 두 가지 채팅을 만든 목적은 대화를 진행하는 방식이 결과에 영향을 미칠지 여부를 확인하는 것이었다.

또한 같은 목적으로 추가 설명에는 추가 기능을 제공하는 것뿐만 아니라 기존 기능 중 일부를 변경하는 것도 포함되었다.

시스템에 대한 GPT의 전반적인 이해를 평가하기 위해 마이크로서비스 간의 상호 의존성을 식별하고, 가장 중요한 서비스와 확장해야 할 서비스를 식별하는 등 몇 가지 질문을 했다.

 

 

2-1. 사례 1: 온라인 자동차 부품 매장

첫 번째 채팅에서 ChatGPT는 온라인 자동차 부품 상점 시스템에 대한 전체 설명을 받았다.

소프트웨어 시스템은 온라인 자동차 부품 매장에 사용된다. 고객은 자동차 모델을 선택할 수 있으며, 선택한 자동차에 사용 가능한 모든 부품이 카테고리별로 표시된다.

사용 가능한 부품 수량은 주문 성공 후 자동으로 업데이트되거나 인증된 관리자가 수동으로 업데이트할 수 있다. 주문을 생성하거나 자동차 부품을 구매하려면 고객이 이메일을 사용하여 새 사용자를 생성해야 하거나 기존 사용자를 사용하여 로그인할 수 있다.

사용자를 생성할 때 고객은 성과 이름, 전화번호, 거주지 주소를 포함한 개인정보를 제공해야 한다. 사용자가 생성되면 확인 링크가 포함된 확인 이메일이 고객에게 전송된다.

고객이 보낸 이메일의 확인 링크를 클릭하면 고객 사용자가 확인된다. 부품을 구매하려면 고객이 시스템에 검증된 사용자가 있어야 하며 구매 주문서를 작성해야 한다. 주문에는 선택한 자동차 부품과 선택한 부품 수량이 포함된다. 개인 고객 정보는 고객의 사용자로부터 로드되며 고객에게는 거주지 주소로 주문을 배송하거나 다른 배송 주소를 지정할 수 있는 옵션이 제공된다.

주소를 선택하면 주문의 총 가격이 표시되며 고객은 할인 코드를 제공하여 할인을 사용할 수 있는 옵션이 제공된다. 고객이 제공한 경우 할인코드를 인증하여 유효기간이 지났는지, 이미 사용되었는지 확인한다. 코드가 유효하면 주문 가격이 할인 코드에 지정된 금액만큼 감소된다.

마지막으로 고객이 결제수단을 선택한다. 배송 시 현금으로 결제하거나 신용카드 또는 직불 은행 카드를 사용하여 온라인으로 결제할 수 있다. 은행 카드를 사용하여 결제하기로 선택한 경우 고객은 카드 정보를 지정해야 하는 온라인 결제 페이지로 리디렉션되며, 그 후 시스템은 결제를 실현하기 위해 은행과 통신한다.

시스템에는 고객 사용자와 관리자(직원) 사용자라는 두 가지 유형의 사용자가 있다. 둘 다 동일한 로그인 양식을 사용하여 시스템에 로그인한다. 관리자 사용자는 기존 자동차 부품의 수량을 수정하거나 새로운 자동차 부품 및 새로운 부품 범주를 추가할 수 있으며 아직 구현되지 않은 주문을 수정할 수도 있다.

부품을 쇼핑하는 동안 고객은 선택한 모든 부품이 담긴 장바구니를 사용할 수 있다. 원하는 부품을 모두 선택한 후 고객은 장바구니를 검토하고 필요한 부분을 수정할 수 있으며, 그 후에는 주문 생성 페이지로 이동된다.

모든 고객은 신규 사용자에게 애플리케이션을 추천할 때 추천 할인을 받을 수 있다. 이 경우 특정 고객에 대한 추천 사용자 목록을 추적할 필요가 있다. 특정 횟수 이후에는 추천을 한 고객에게 할인 금액이 증가하기 때문이다.

 

여기에서 GPT는 다음 서비스를 식별했다.

  1. 사용자 서비스: 이 마이크로서비스는 사용자 계정의 생성, 인증 및 확인을 처리한다. 사용자 데이터 저장 및 관리, 인증메일 발송, 추천 사용자 추적 등을 담당한다.
  2. 재고 서비스: 이 마이크로서비스는 온라인 상점에서 구입할 수 있는 자동차 부품의 재고를 관리하는 역할을 한다. 자동차 부품 및 부품 카테고리의 추가, 수정, 삭제는 물론 성공적인 주문 후 사용 가능한 부품 수량 업데이트도 처리한다.
  3. 주문 서비스: 이 마이크로서비스는 구매 주문의 생성, 수정 및 처리를 처리한다. 사용자 서비스에서 개인 정보를 검색하고 총 주문 금액을 계산하며 할인 코드를 확인한다. 또한 은행과의 통신을 통해 결제 처리도 처리한다.
  4. 카트 서비스: 이 마이크로서비스는 온라인 상점의 장바구니 기능을 관리한다. 이를 통해 고객은 주문을 생성하기 전에 선택한 부품을 추가하고 수정할 수 있다.
  5. 추천 서비스: 고객별 추천 사용자를 추적하고, 추천 사용자 수에 따라 할인 금액을 계산하는 마이크로 서비스이다.
  6. 인증 서비스: 이 마이크로서비스는 고객 및 관리자 사용자 모두의 인증 및 권한 부여를 처리한다. 승인된 사용자만 시스템의 데이터에 액세스하고 수정할 수 있도록 보장하는 역할을 담당한다.
  7. 배송 서비스: 이 마이크로서비스는 주문에 대한 배송 주소 선택 및 확인을 처리한다.
  8. 알림 서비스: 이 마이크로서비스는 주문 상태 업데이트, 배송 정보 및 기타 관련 정보에 대해 고객에게 알림 보내기를 처리한다.
  9. 할인 서비스: 이 마이크로서비스는 고객을 위한 할인 코드 생성 및 확인을 관리한다.

 

추가 대화에서 사용자 서비스가 가장 많이 변경될 가능성이 있는 반면, 가장 중요한 부분은 주문 서비스이며, 인벤토리 서비스는 확장될 가능성이 가장 높은 것으로 결정되었다. ChatGPT는 시스템에 대한 전반적인 이해를 확립하기 위해 이러한 마이크로서비스 간의 상호 의존성을 확인하라는 지시를 받았다. 그림 1에는 식별된 마이크로서비스와 그 관계가 표시되어 있다.

 


[그림1. 온라인 자동차 부품 매장 I]


 

그림 1에서 보는 바와 같이 Order 마이크로서비스는 아키텍처의 중앙에 배치되어 있으며 이에 의존하는 다른 서비스도 많고 많은 종속성을 갖고 있다.

이는 문제가 있는 것으로 보일 수 있으며 설계상의 결함으로 간주될 수 있으며 시스템의 특성에 따라 결정된다. 그러나 이는 시스템 설명에 제공된 내용이며, ChatGPT는 설명에 충실한 모델을 제공했다.

시스템에 대한 적절한 설명인지, 시스템에 변경이 필요한지 여부는 분석하는 소프트웨어 설계자에게 달려 있다. 추가 질문을 하고 시스템에 대한 추가 정보를 제공함으로써 이러한 잠재적인 결함을 제거할 수 있다.

 

두 번째 채팅에서는 GPT에게 전체 설명의 일부를 기반으로 마이크로서비스를 식별하고 정의하도록 요청했다.

주어진 설명에서 GPT는 사용자 서비스, 카탈로그 서비스, 주문 서비스, 결제 서비스, 관리 서비스, 알림 서비스 등 6개의 마이크로서비스를 식별했다.

이는 즉시 식별되지는 않았지만 나중에 대화를 통해 확인되었다. 그 후 ChatGPT는 시스템에 대한 추가 설명을 받았고 더 많은 마이크로서비스가 필요한지 질문을 받았다. 이러한 변경 사항을 구현하기 위해 두 가지 서비스가 추가로 확인되었다.

 

 



참 고 문 헌




  1. Tatjana Stojanovic, Sa?a D. Lazarevi?, The Application of ChatGPT for Identification of Microservices, E-business technologies Conferences Proceedings 2023, Vol. 3 No. 1. 2023.
  2. S. Newman, Building Microservices ? Designing fine-grained systems, O'Reilly Media, Inc., 2015.
  3. J. &. F. M. Lewis, "Microservices a definition of this new architectural term," 25 3 2014. [Online]. Available: https://martinfowler.com/articles/microservices.html.
  4. M. R. a. R. H. Dharmendra Shadija, "Microservices: Granularity vs. Performance," in In Companion Proceedings of the10th International Conference on Utility and Cloud Computing (UCC ’17 Companion). Association for Computing Machinery, New York, NY, USA, 215?220. , 2017.
  5. Haque, Md & Li, Shuai. (2023). The Potential Use of ChatGPT for Debugging and Bug Fixing. EAI Endorsed Transactions on AI and Robotics. 2. e4. 10.4108/airo.v2i1.3276.
  6. Liu, Chao & Xuanlin, Bao & Zhang, Hongyu & Zhang, Neng & Hu, Haibo & Zhang, Xiaohong & Yan, Meng. (2023). Improving ChatGPT Prompt for Code Generation.
  7. White, J., Hays, S., Fu, Q., Spencer-Smith, J., & Schmidt, D.C. (2023). ChatGPT Prompt Patterns for Improving Code Quality, Refactoring, Requirements Elicitation, and Software Design. ArXiv, abs/2303.07839.
  8. Kim, Dae-Kyoo. (2023). Using ChatGPT to Develop Software Systems: Alert to Software Engineers?. 10.13140/ RG.2.2.26388.78725.
  9. "Open AI," 30 11 2022. [Online]. Available: https://openai.com/ blog/chatgpt. [Accessed 10 5 2023].




저작권 정책


K-ICT 클라우드혁신센터의 저작물인 『마이크로서비스 식별을 위한 ChatGPT 적용』은 K-ICT 클라우드혁신센터에서 상명대학교 서광규 교수에게 집필 자문을 받아 발행한 전문정보 브리프로, K-ICT 클라우드혁신센터의 저작권정책에 따라 이용할 수 있습니다.
다만 사진, 이미지, 인용자료 등 제3자에게 저작권이 있는 경우 원저작권자가 정한 바에 따릅니다.