5. 비-기능 요구사항

5.1 제품(서비스) 성능

쿠버네티스(K8s) 와 Docker Swarm 클러스터링을 통한 자원 활용을 통해 요구사항들을 다룹니다.

- 쿠버네티스(K8s) Scale Out 및 Clustering 지원: 쿠버네티스는 애플리케이션을 여러개의 파드(pod)로 분산하고, 필요에 따라 자동으로 확장하거나 축소할 수 있도록 지원합니다. 파드는 동일한 애플리케이션 컨테이너들을 묶어놓은 단위이며, 이를 통해 애플리케이션을 쉽게 스케일 아웃할 수 있습니다. 캐시 메모리 및 분산 컴퓨팅: 쿠버네티스는 다양한 종류의 볼륨을 지원하므로, Redis와 같은 캐시 메모리 서비스를 파드로 실행하고 데이터를 관리하는 것이 가능합니다. 분산 컴퓨팅은 여러 파드들을 이용하여 병렬 작업을 수행하거나, 데이터를 처리할 수 있도록 합니다. Database Clustering 지원: 쿠버네티스는 StatefulSets라는 리소스를 통해 상태를 가지는 애플리케이션을 관리할 수 있습니다.

이를 이용하여 데이터베이스 클러스터를 구성하고 관리할 수 있습니다 Health Check 및 장애 극복: 쿠버네티스는 파드의 상태를 지속적으로 모니터링하고, 불필요한 상태의 파드를 제거하고 새로운 파드를 생성하는 등의 작업을 수행하여 애플리케이션의 가용성을 높일 수 있습니다. Liveness Probe와 Readiness Probe를 통해 파드의 상태를 모니터링하며 필요에 따라 조치를 취할 수 있습니다.

- Docker Swarm Scale Out 및 Clustering 지원: Docker Swarm은 애플리케이션을 서비스(Service) 단위로 관리합니다. 서비스는 여러 개의 태스크(Task)로 구성되며, 각 태스크는 동일한 컨테이너 이미지를 실행하는 인스턴스입니다. 서비스의 스케일을 조절하여 필요에 따라 컨테이너 인스턴스를 추가하거나 제거하여 애플리케이션을 확장하거나 축소할 수 있습니다. 캐시 메모리 및 분산 컴퓨팅: Docker Swarm은 다양한 네트워크 모드를 지원하여, 서비스 간 통신을 구성할 수 있습니다.

따라서 캐시 메모리와 같은 데이터 스토어 서비스를 컨테이너로 실행하고 다른 서비스들과 연결하여 분산 컴퓨팅 환경을 구성할 수 있습니다. Database Clustering 지원: Docker Swarm은 데이터베이스 클러스터를 구성하기 위해 볼륨을 관리할 수 있는 기능을 제공합니다. 볼륨을 사용하여 데이터의 지속성을 보장하고, 여러 컨테이너가 동일한 데이터에 접근할 수 있도록 할 수 있습니다. Health Check 및 장애 극복: Docker Swarm은 서비스의 상태를 모니터링하고 필요한 경우 서비스를 다시 시작하거나 불필요한 컨테이너를 제거하여 가용성을 유지합니다. Health Check 설정을 통해 서비스의 상태를 감시하고 필요한 조치를 취할 수 있습니다.


5.2 보안

Keycloak은 동적 싱글 사인온 솔루션을 제공하기 위해 표준 보안 프로토콜에 따라 설계된 신뢰할 수 있는 오픈소스입니다.

Keycloak을 통해 관리할 수 있는 정보, 즉 다음을 볼 수 있습니다.

Keycloak은 다음 표준 프로토콜을 지원합니다.