외부 기여자가 참여하여 소프트웨어의 개발이 이루어지는 공개SW 연구개발과제의 설계는 개발 영역을 나누어 개발자가 의사소통이 쉽게 이루어질 수 있도록, 소프트웨어 소스 코드의 결합도가 낮게 모듈화하는 설계를 고려해야한다. 이런 설계는 각 기능 모듈이 다른 모듈에 영향을 주지 않고 개발을 할 수 있게 하며, 실험적인 코드들이 안전하게 수용될 수 있는 특징이 있다.
직접 개발한 소프트웨어 유형뿐만 아니라, 외부의 공개SW를 활용하거나 개작하는 경우의 과제 유형에서도 공개 SW 활용의 효용성을 위해서 직접 관리하는 핵심영역과 공개SW 활용영역이 쉽게 통합될 수 있도록 정의된 API를 통해서 통신하는 소규모의 독립적인 서비스로 구성되는 마이크로서비스 아키텍처(MSA)로 구성하는 것이 좋다.
마이크로서비스는 분산형 개발을 통해 같은 애플리케이션 개발에 더 많은 개발자가 동시 참여할 수 있으므로 개발에 드는 시간을 단축할 수 있으며 여러 가지 프로그램 언어로 개발되고 서로 API를 사용하기 때문에 개발자들은 필요한 기능에 맞는 최적의 언어와 기술을 자유롭게 선택할 수 있는 장점이 있다.
수행자는 공개SW 연구개발과제의 설계 단계에서 공개한 소프트웨어가 재사용 될 수 있도록 모듈라 방식, 플러그인 아키텍처, 마이크로서비스 아키텍처 등 소프트웨어를 쉽게 확장할 수 있도록 설계하는 것이 중요하며, 일반적으로 소프트웨어 재사용을 위한 작업은 추상화(abstraction), 저장(storage), 재구성(recontextualization)의 세 단계를 통해 수행한다. 3
추상화(abstraction)는 기존의 소프트웨어 자산이나 소프트웨어 개발 첫 단계로부터 재사용이 가능한 소프트웨어 부분들을 정하는 것을 의미하며, 이 과정에서 공개SW 연구개발과제 수행자는 모든 소프트웨어를 직접 개발할지 또는 외부에서 획득한 공개SW를 활용할지를 결정하게 된다.
저장(storage) 단계는 사용자가 공개한 프로젝트에서 원하는 소프트웨어 기능들을 쉽게 찾을 수 있도록 결과물을 구성하는 소프트웨어 코어 부문, 확장 가능한 플러그인 부문 등으로 구분하고 각 부문의 주요 기능에 대하여 상세히 기술하는 과정이다.
마지막으로 공개한 프로젝트의 기능을 재사용하고자 하는 개발자가 이해할 수 있는 형태로 만드는 재구성(recontextualization) 작업을 통해 결과물의 재사용성은 개선될 수 있다. 플러그인 개발을 따라 할 수 있는 플러그인 개발 가이드라인 또는 API 활용을 돕는 API 활용 가이드라인 등의 문서를 추가로 준비하여 공개하고, 소프트웨어 데모나 플러그인을 쉽게 활용할 수 있는 플러그인 저장소 등을 구축하여 결과물의 활용을 적극적으로 지원할 수도 있다.
마이크로서비스 아키텍처와 매크로서비스 아키텍처 비교
📓 클라우드바리스타* 커뮤니티 사례
- 클라우드바리스타 커뮤니티에서는 공개SW R&D 설계 방법을 수립 및 추진, 개방형 API 기반의 매크로서비스아키텍처*로 개발 중
공개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