Skip to content

Latest commit

 

History

History
93 lines (69 loc) · 7.55 KB

03.md

File metadata and controls

93 lines (69 loc) · 7.55 KB

3. 공개SW R&D 과제 설계

가. 공개SW 연구개발과제의 소프트웨어 설계 방식

외부 기여자가 참여하여 소프트웨어의 개발이 이루어지는 공개SW 연구개발과제의 설계는 개발 영역을 나누어 개발자가 의사소통이 쉽게 이루어질 수 있도록, 소프트웨어 소스 코드의 결합도가 낮게 모듈화하는 설계를 고려해야한다. 이런 설계는 각 기능 모듈이 다른 모듈에 영향을 주지 않고 개발을 할 수 있게 하며, 실험적인 코드들이 안전하게 수용될 수 있는 특징이 있다.

직접 개발한 소프트웨어 유형뿐만 아니라, 외부의 공개SW를 활용하거나 개작하는 경우의 과제 유형에서도 공개 SW 활용의 효용성을 위해서 직접 관리하는 핵심영역과 공개SW 활용영역이 쉽게 통합될 수 있도록 정의된 API를 통해서 통신하는 소규모의 독립적인 서비스로 구성되는 마이크로서비스 아키텍처(MSA)로 구성하는 것이 좋다.

그림 8. 모노리틱 아키텍처와 마이크로서비스 아키텍처의 비교


마이크로서비스는 분산형 개발을 통해 같은 애플리케이션 개발에 더 많은 개발자가 동시 참여할 수 있으므로 개발에 드는 시간을 단축할 수 있으며 여러 가지 프로그램 언어로 개발되고 서로 API를 사용하기 때문에 개발자들은 필요한 기능에 맞는 최적의 언어와 기술을 자유롭게 선택할 수 있는 장점이 있다.


나. 공개SW 연구개발과제의 소프트웨어 재사용에 대한 접근

수행자는 공개SW 연구개발과제의 설계 단계에서 공개한 소프트웨어가 재사용 될 수 있도록 모듈라 방식, 플러그인 아키텍처, 마이크로서비스 아키텍처 등 소프트웨어를 쉽게 확장할 수 있도록 설계하는 것이 중요하며, 일반적으로 소프트웨어 재사용을 위한 작업은 추상화(abstraction), 저장(storage), 재구성(recontextualization)의 세 단계를 통해 수행한다. 3

추상화(abstraction)는 기존의 소프트웨어 자산이나 소프트웨어 개발 첫 단계로부터 재사용이 가능한 소프트웨어 부분들을 정하는 것을 의미하며, 이 과정에서 공개SW 연구개발과제 수행자는 모든 소프트웨어를 직접 개발할지 또는 외부에서 획득한 공개SW를 활용할지를 결정하게 된다.

저장(storage) 단계는 사용자가 공개한 프로젝트에서 원하는 소프트웨어 기능들을 쉽게 찾을 수 있도록 결과물을 구성하는 소프트웨어 코어 부문, 확장 가능한 플러그인 부문 등으로 구분하고 각 부문의 주요 기능에 대하여 상세히 기술하는 과정이다.

마지막으로 공개한 프로젝트의 기능을 재사용하고자 하는 개발자가 이해할 수 있는 형태로 만드는 재구성(recontextualization) 작업을 통해 결과물의 재사용성은 개선될 수 있다. 플러그인 개발을 따라 할 수 있는 플러그인 개발 가이드라인 또는 API 활용을 돕는 API 활용 가이드라인 등의 문서를 추가로 준비하여 공개하고, 소프트웨어 데모나 플러그인을 쉽게 활용할 수 있는 플러그인 저장소 등을 구축하여 결과물의 활용을 적극적으로 지원할 수도 있다.

마이크로서비스 아키텍처와 매크로서비스 아키텍처 비교

마이크로서비스 아키텍처 매크로서비스 아키텍처
주요 목적 • 지속적배포(Continuous Delivery) • 접근 가용성(Enable Access)
주요 특징 • 기능단위의 독립적 실행, 운용
• 각 실행 단위 별 데이터 관리
• 개별 실행 단위의 API 제공
• 전체 서비스 단위로 실행 운용
• 데이터의 전체 공유
• 전체 서비스에 대한 API 제공
서비스 구현 모델
API • 다수의 독립 배포가 가능한 마이크로 서비스 들에 의하여 개별 기능들의 API를 제공 • 모놀리틱 응용안에 기능들을 엮어서 전체 서비스 차원의 API를 제공

📓 클라우드바리스타* 커뮤니티 사례

  • 클라우드바리스타 커뮤니티에서는 공개SW R&D 설계 방법을 수립 및 추진, 개방형 API 기반의 매크로서비스아키텍처*로 개발 중

공개SW R&D 설계 방식

클라우드바리스타 공개SW R&D 설계 및 개발 방식


  • 초기 워터폴 모델에서 점차 에자일 방식으로 혼합하여 설계 추진
  • 공개SW 개발(에자일)의 특성 반영으로 설계-개발 단계가 혼재된 방식으로 추진
  • 다양한 채널을 통하여 상시 외부 의견을 수렴하고 소스코드에 반영

설계시, 미니 서비스 구조(Mini Service Architecture)의 수용

클라우드바리스타 미니서비스아키텍처 형상


  • 개별 SW모듈(프레임워크)들은 개방형 API를 제공하며, 모듈별 독립 실행이 가능한 미니 서비스 구조를 수용
  • 설계 초기, 자체 개발 SW부분과 공개SW 활용 부분에 대한 정책을 수립

※ 미니서비스아키텍처: 기능 단위(Fine-grained)의 개별 배포 및 실행이 가능한 마이크로서비스 보다는 크고, 관련 기능의 그룹인 모듈 단위(Coarse-grained)의 개별 배포 및 실행이 가능한 서비스 아키텍처 (micro-mini-macro)


3) Essentials of Systems Analysis and Design, Joseph S Valacich, University of Arizona, Joey F. George, Iowa State University, 2015 return

*) 클라우드바리스타는 출연연, 기업, 개발자 모두가 참여하여 개발의 전과정을 공개SW 개발방법론에 따라 수행하는 공개SW 대표 프로젝트로 다양한 멀티 클라우드 활용·확산을 극대화하는 멀티 클라우드 서비스 공통 프레임워크 기술 및 커뮤니티 고도화 도모 return

*) 미니서비스아키텍처: 기능 단위(Fine-grained)의 개별 배포 및 실행이 가능한 마이크로서비스 보다는 크고, 관련 기능의 그룹인 모듈 단위(Coarse-grained)의 개별 배포 및 실행이 가능한 서비스 아키텍처 (micro-mini-macro) return