1. 프로젝트 개요
1. 개요
1.1 목적
이슈 기반 요구사항 관리 시스템을 개발하여, 제품별 요구사항의 생명주기(추가-채택-변경-삭제 ) 및 이력을 관리하고, 이와 함께 Atlassian ALM Tool Chain과 통합하여 Business Intelligence와 Atlassian 제품군에 없는 Requirement Management System 을 제공하는 RMS (for atlassian)시스템을 개발하는 것을 목표로 aRMS를 설계합니다.
1.2 범위
본 설계의 범위는 아래 시스템의 기능에 대한 설계입니다.
구분 | 기능 |
Auth System
|
인증 시스템으로써, 권한 관리와 계정 관리 및 사용자 맞춤형 서비스를 제공합니다.
|
Product( Service ) System
|
제품(서비스)를 관리하며, 연관하는 ALM Toolchain 과 Mapping 하여 데이터 싱크를 제공한다.
|
Requirement System
|
요구사항을 관리하며, 연관하는 제품(서비스)와 Mapping 하여, 제품 (서비스) - 요구사항 - ALM 을 연결한다.
|
Monitoring System
|
다양한 어플리케이션의 조합으로 인하여, 각 시스템간의 성능 및 안정성을 보장하기 위하여 JAVA 기반 모니터링 을 지원한다.
|
1.3 관련 문서
구분 | 참조 URL |
Project Charter
|
https://float.tistory.com/270 |
SRS
|
https://float.tistory.com/271 |
SDS
|
https://float.tistory.com/271 |
1.4 개발자 스펙
구분 | 필요 Skill |
View Part
|
html+css, Bootstrap, RequireJS, Bower, Grunt, AngularJS, jQuery, Qunit, Flex, Json, xml, BlazeDS |
Server Part
|
Apache(modjk), Nginx, Tomcat, Resin, Jetty, SiteMash, Tiles, FreeMarker, Velocity |
Framework Part
|
Struts, Spring, iBatis, Hibernate, Spring-integration, Spring-security, Spring-Boot, Spring-DW, Spring-WebFlow, Spring-Data(JPA), Spring-Batch, Spring-WebServices, Spring-Mobile, Spring-MVC |
Tool Part
|
Quartz, Ehcache, MemCache, Redis, Apache-Commons, EgovFramework(Component) |
CI Part
|
Junit, Maven, Hudson, Jenkins, Bamboo, Nexus, Jira, Fisheye, Crucible, Confluence, Sonar |
Database Part
|
MySql, Oracle, MS-sql, postgres, Hadoop, Storm, Spark, Cassandra, MongoDB |
Search Engine Part
|
Elastic Search, Kibana, Logstash, Beats, Grafana
|
Management Part
|
PMBOK, MicroService, CBD, PLE, Prototype, PMS, ALM
|
Virtual Image Part
|
Docker, Kubernetes(K8s), Docker Swarm
|
Microservice Part
|
Netty - Zookeeper - Finagle - Kafka
|
2.설계고려사항
2.1 소프트웨어 설계 목표
jsTree Service Framework를 활용하여 Tree 알고리즘 기준의 Requirement Management System 을 설계합니다.
aRMS는 프로젝트 요구사항을 효과적으로 관리하기 위한 시스템으로, 다양한 기능과 모듈을 포함합니다.
- 설계 목표
Frontend 및 Backend 분리: aRMS의 주요 설계 목표 중 하나는 Frontend 개발과 Backend 개발을 명확하게 분리하는 것입니다.
이를 통해 각 영역의 독립성을 확보하고 개발 프로세스를 효율적으로 관리할 수 있습니다.
비지니스 로직과 설정의 분리: 두 번째 목표는 비지니스 로직을 Backend에 집중시키고, Java 개발의 engine 및 framework 설정은 Core-Module로 분리하여 실제 비지니스 로직과 구성 요소를 분리합니다. 이를 통해 복잡성을 감소시키고 유지보수성을 향상시킵니다.
패키지 및 라이브러리 관리 툴 활용: aRMS의 세 번째 목표는 패키지 및 라이브러리 관리를 효율적으로 수행하는 것입니다. Maven과 같은 관리 툴을 활용하여 라이브러리의 업데이트와 관리를 용이하게 하고, 관련한 라이브러리를 Lib-Module로 분리하여 패키지 업데이트를 간편하게 지원합니다.
aRMS와 관련한 설계목표는 개발 후 → 자동으로 빌드하며 → Core-Module은 Nexus에 Upload되고, Docker는 Docker Hub에 Upload되도록 Source Write after Deploy 까지 One Shot Flow CI/CD를 제공하고
Source 설계 목표는 비지니스 코드인 제품 코드는 Web-Module 에서만 사용하도록 구성했습니다.
2.2 제약사항
2.2.1 H/W 제약사항
하드웨어는 Monitoring Server 시스템으로 인하여 많은 자원이 필요합니다. 따라서, 다음의 하드웨어 최소 스펙과 권장 스펙을 지정하도록 하겠습니다.
spec | 설명 | cpu | mem | disk |
최소 스펙 |
1 Server All in one
|
12 croe
|
32 gb
|
500 gb
|
권장 스펙
|
4 + 1 Server Cluster
|
per 12 core
|
per 16 gb
|
NFS Server 2TB~
|
2.2.2 S/W 제약사항
aRMS는 S/W 제약사항이 존재하지 않고, 100% OpenSource를 활용하여 개발하도록 합니다.
2.2.3 N/W 제약사항
aRMS는 Atlassian ALM 제품군과 통신이 필요합니다.
2.3 기타
PLE ( Product Line Engineering ) 기법을 활용하여, 재사용을 극대화한 프로젝트 구조를 적용합니다.
- aRMS는 자체적인 Static Code Analysis ( SonarQube )를 적용하여 코드 품질을 유지하도록 합니다. - aRMS는 BitBucket (혹은 Github)을 활용하여 Git으로 형상관리를 적용하도록 합니다.
'313DevGRP' 카테고리의 다른 글
[313DevGRP] 3. 설계 (0) | 2023.08.15 |
---|---|
[313DevGRP] 5. 비-기능 요구사항 (0) | 2023.08.14 |
[313DevGRP] 4. 제품(서비스) 기능 요구사항 (0) | 2023.08.13 |
[313DevGRP] 인터페이스 요구사항 (0) | 2023.08.13 |
[313DevGRP] 2. 제품(서비스) 조망 (0) | 2023.08.11 |