시스템 설계란?
시스템 설계
- 시스템의 요구사항을 충족시키기 위해 필요한 아키텍처, 인터페이스 및 데이터를 정의하는 과정
- 소프트웨어를 구성하는 요소들(a.k.a 컴포넌트) 간의 관계와 동작 메커니즘을 표현하기 위한 구조
시스템 설계가 왜 필요한가?
설계를 후순위로 두면 시스템을 개발하는 비용이 오히려 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.
- 책 'Clean Architecture'에서
- 설계도 없이 지어진 건물은 없다.
- 설계도 없이 지은 건물은 안전할까?
- 개발이 진행된 이후에는 이미 개발된 전체 시스템의 구조를 수정하기 어렵기 때문에 미리 설계해야 한다.
- 설계 과정이 있어야 확장성, 보안 등 시스템에 요구되는 다양한 요구사항을 잘 충족시킬 수 있다.
- 설계의 유무는 개발 과정에 큰 영향을 미친다.
- 설계는 개발자들 간에 중요하게 사용되는 의사 소통 수단이다.
설계의 대상
관점에 따라 어떤 것에 중점을 두느냐에 따라, 설계 결과는 여러 개가 될 수 있다.
- 소프트 웨어를 구성하는 여러 시스템의 구조 설계 - 구성 요소들의 결합 관계, 구조도
- 여러 시스템 간 동작하는 방식에 대한 설계 - 데이터의 흐름, 입/출력 순서, 처리 순서, 프로토콜 등
시스템 설계 유형
- 아키텍처 설계: 소프트웨어의 전체 구조를 high-level에서 기술. 구성 요소를 정의하고 요소들 간의 관계를 정의
- 자료구조 설계: 소프트웨어의 요구사항을 충족시키기 위해 필요한 요소들을 자료구조로 변환하여 설계하는 과정
- 인터페이스 설계: 사용자와 소프트웨어 간, 소프트웨어를 구성하는 구성 요소 간 어떻게 통신하는지 protocol과 주고받을 데이터 내용 등을 설계하는 과정
큰 그림으로 시작해 점점 디테일한 부분까지 볼 수 있게끔
전체적인 흐름을 설계할 수 있다. 하나의 요청을 처리하기 위해 어떤 과정을 거쳐야하는지 상세하게 알 수 있다. Low-level
지금까지는 공부를 위해 코드를 짜는 것이 전부였기 때문에, 코드를 작성하기 전에 설계를 한다는 개념이 굉장히 생소하게 느껴졌다.
이번 강의를 통해 시스템 설계가 왜 필요하고 중요한지 알게 됐다. 설계라는 것이 단순히 개발 환경을 편하게 만들어주는 게 아니라, 프로젝트 전반에서 의사 소통의 수단으로 쓰일 수 있다는 점이 크게 다가왔다.
앞으로 크고 작은 프로젝트를 진행하게 될텐데 이 강의에서 배운 내용을 토대로 설계를 해보고 싶다는 마음이 샘솟는다. 화이팅 화이팅
#패스트캠퍼스 #패캠챌린지 #수강료0원챌린지 #환급챌린지 #직장인인강 #직장인자기계발
#패캠인강후기 #패스트캠퍼스후기 #오공완 #사이드프로젝트10개기술스택으로구현하는풀스택서버리스프로젝트withReact
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'부트캠프 > 따로 공부' 카테고리의 다른 글
사이드 프로젝트 with React 21. 시퀀스 다이어그램 (0) | 2023.03.12 |
---|---|
사이드 프로젝트 with React 20. 아키텍처 다이어그램 (0) | 2023.03.11 |
[백엔드 인증/보안] 해싱, 토큰 Token, JWT (0) | 2023.03.09 |
사이드 프로젝트 with React 18. AWS (0) | 2023.03.09 |
[맥 Mac] 사용 중인 포트 강제 종료(localhost port) (0) | 2023.03.08 |