오늘 뭐했냐/개발에 대한 주저리

23.08.15 아키텍쳐 설계

스스로에게 2023. 8. 22. 01:55

 아키텍쳐 설계에 대한 자세한 내용을 알기 전에 일단은 전체적인 내용과 개념에 대해서 이해하기 위해서 정리한 것이다. 이를 통해서 적어도 내가 어떻게 프로젝트를 설계했는지 설명할 수 있어야겠다. 그리고 더 공부를 해서 여러 방법들을 참고하고 장단점을 비교하거나 보완해서 보다 효율적인 설계를 할 수 있어야할 것이다.

 

집짓기에 비유

  1. 요구 사항 수집 및 분석: 집을 지을 때 필요한 방의 개수, 크기, 기능 등을 정합니다. 이는 집의 거주자가 원하는 스타일과 필요로 하는 기능을 이해하는 과정과 유사합니다.
  2. 시스템 분해: 큰 집을 주방, 거실, 침실 등의 각 구역으로 나눕니다. 각 구역이 어떤 역할을 하는지 결정합니다.
  3. 구성 요소 선택: 어떤 재료(벽돌, 목재, 철근 등)를 사용할 것인지 결정합니다.
  4. 통신 및 인터페이스 설계: 각 방과 방 사이의 문이나 통로를 어떻게 배치할 것인지, 어떤 방식으로 연결될 것인지를 결정합니다.
  5. 배포 및 확장성: 나중에 집을 확장하거나 추가적인 시설(예: 창고, 차고)을 지을 수 있도록 계획합니다.
  6. 보안: 창문에 블라인드나 보안 시스템을 설치하여 집 안의 사람들과 물건을 보호합니다.
  7. 예외 및 오류 처리: 화재나 누수와 같은 예외 상황에 어떻게 대응할지를 계획합니다.
  8. 검증 및 테스트: 집의 구조나 기능이 계획대로 잘 작동하는지 확인합니다.
  9. 문서화: 집의 설계도나 사용된 재료, 기타 정보를 기록합니다.

이렇게 보면, 아키텍처 설계는 크게 복잡한 시스템을 단순화하여 관리 가능한 부분으로 나누고, 이들 간의 관계와 작동 방식을 정의하는 과정입니다. 마치 집을 설계하고 지을 때 필요한 계획과 과정을 거치는 것과 비슷하죠

 

전반적인 내용 

아키텍처 설계는 시스템 또는 소프트웨어의 고수준 구조를 정의하는 과정입니다. 아키텍처는 시스템의 주요 구성 요소와 이들 간의 관계를 기술하며, 이를 통해 기능, 성능, 확장성, 안정성, 보안 및 기타 요구 사항을 충족시키도록 설계됩니다.

아키텍처 설계의 주요 단계 및 관련 내용은 다음과 같습니다.

  1. 요구 사항 수집 및 분석: 시스템 또는 소프트웨어가 충족해야 하는 기능과 비기능적 요구 사항을 이해합니다.
  2. 시스템 분해: 큰 시스템을 더 작고 관리 가능한 부분으로 나눕니다. 이를 통해 각 부분의 역할과 책임을 명확하게 정의할 수 있습니다.
  3. 구성 요소 선택: 재사용 가능한 컴포넌트, 라이브러리, 서비스 또는 프레임워크를 선정하여 시스템 구축에 사용합니다.
  4. 통신 및 인터페이스 설계: 구성 요소 간의 통신 방법, 데이터 교환 형식, 프로토콜 등을 결정합니다.
  5. 배포 및 확장성: 시스템이 어떻게 배포될지, 향후 확장성은 어떻게 될지를 고려합니다.
  6. 보안: 시스템 내의 민감한 데이터 및 기능에 대한 보호 방법을 결정합니다.
  7. 예외 및 오류 처리: 예상치 못한 상황이나 오류 발생 시 시스템이 어떻게 반응해야 하는지를 정의합니다.
  8. 검증 및 테스트: 아키텍처가 요구 사항을 만족하는지 확인하기 위해 프로토타입 개발, 시뮬레이션 또는 기타 방법을 사용합니다.
  9. 문서화: 아키텍처, 결정 사항, 그리고 그 이유를 자세히 기술하여 향후 개발팀이 이해하고 따를 수 있도록 합니다.

아키텍처 설계는 여러 요소와 관련된 결정을 내리는 복잡한 과정입니다. 올바른 아키텍처 선택은 소프트웨어나 시스템의 성공에 큰 영향을 미칠 수 있으므로, 경험과 전문 지식이 필요합니다.