책 읽다가 코딩하다 죽을래
시스템 설계가 왜 필요한가요? 본문
📕 시스템 설계란?
- 시스템의 요구사항을 충족하기 위해 필요한 아키텍처, 인터페이스 및 데이터를 정의하는 과정이다.
- 소프트웨어를 구성하는 요소들 간이 관계와 동작 메커니즘을 표현하기 위한 구조체이다.
설계가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.
- 책 clean Archictecture 중
📗 시스템 설계의 필요성
1. 개발이 진행된 이후에는 이미 개발된 전체 시스템의 구조를 수정하기가 어렵기 때문에 미리 설계를 해야 한다.
2. 설계 과정이 있어야 확장성, 보안 등 시스템에 요구되는 다양한 요구사항을 충족시킬 수 있는지 미리 알아볼 수 있다.
3. 시스템 수정이 필요할 때 어느 부분을 수정해야 하고 어느 부분은 건드리지 말아야 할지 확인이 가능한다.
4. 개발자들 간에 중요하게 사용될 의사 소통 수단이 된다.
📘 어떤 대상을 설계해야 하는가?
- 설계 모델
설계는 관점에 따라서 어떤 것에 중점을 두느냐에 따라 설계 방식, 결과가 여러 개가 될 수 있다.
설계 모델은 크게 구조 모델과 행위 모델 2가지로 나뉘는데,
구조 모델은 소프트웨어를 구성하는 여러 시스템 간의 결합 관계, 구조도를 나타내며,
행위 모델은 데이터의 흐름, 입/출력 순서, 처리 프로세스, 프로토콜 등 여러 시스템 간 동작하는 방식을 나타낸다.
- 설계 유형
- 아키텍처 설계: 소프트웨어의 전체 구조를 high-level(추상화)에서 기술. 구성 요소를 정의하고 요소들 간의 관계를 정의
- 자료구조 설계: 소프트웨어의 요구사항을 충족시키기 위해 필요한 요소들을 자료구조로 변환하여 설계하는 과정
- 인터페이스 설계: 사용자와 소프트웨어 간, 소프트웨어를 구성하는 구성 요소 간 어떻게 통신하는지 protoco과 주고받을 데이터 내용 등을 설계하는 과정
설계 과정에는 순서가 있다. High-level인 아키텍처부터 추상화한 후, 점점 Low-level로 구체화시키는 순서가 일반적이다.
📙 예시
- 아키텍처 다이어그램
아키텍처 다이어그램은 시스템의 다양한 구성 요소를 시각적으로 보여주고 서로 통신하고 상호 작용하는 방법을 보여줍니다.
이 다이어그램을 보자면 웹 브라우저가 Amazon API GateWay
를 호출하고 Amazon API GateWay
는 AWS Lambda
를 호출하며 AWS Lambda
는 Amazon Dynamo DB
를 접근한다는 것이 한 그림으로 표현하고 있다.
그리고 앞에서 설명했듯이 Amazon API GateWay
는 어떻게 동작하는지 구체적으로 설명이 되어있지 않는 것처럼 각 요소들은 내부 동작은 서술되어있지 않은 채로 추상화되어 있다.
- 데이터 스키마
데이터 베이스 스키마는 데이터베이스 전체 또는 일부의 논리적인 구조를 표현하는 것으로 데이터베이스 내에서 데이터가 어떤 구조로 저장되는지를 나타낸다. 그림을 보시면 각 모델의 테이블과 갖고 있는 키(key)와 키의 타입(type)이 명시되어 있으며 모델들 간의 관계에 대해서도 나타내고 있다.
✅ 정리
소프트웨어 공학에서의 시스템 설계는 시스템의 요구사항을 충족하기 위한 아키텍처, 인터페이스, 및 데이터를 정의하는 과정
이다. 이는 소프트웨어를 구성하는 요소들 간의 관계와 동작 메커니즘을 표현하는 구조체이기도 하다. 시스템 설계의 필요성은 개발 이후에 시스템 구조를 수정하기가 어려워지므로 미리 설계를 해야 하며, 다양한 요구사항을 충족시킬 수 있는지 사전에 파악할 수 있고, 수정이 필요할 때 어디를 수정해야 하는지를 파악할 수 있으며, 개발자 간 의사 소통의 중요한 수단이 될 수 있다.
설계는 구조 모델과 행위 모델로 나뉘며, 아키텍처 설계, 자료구조 설계, 인터페이스 설계 등 다양한 유형이 있다. 일반적으로는 아키텍처부터 추상화하여 점점 구체화시키는 순서로 진행된다