티스토리 뷰

시스템 디자인

시스템 디자인

kmj24 2021. 7. 10. 21:03

시스템 디자인 스터디를 진행하며 배운 내용을 정리해놓으려고 한다.

시스템 디자인 이란?

 시스템이 특정 요구사항을 충족하도록 아키텍처, 모듈, 인터페이스, 데이터를 정의하는 과정이다.

 

 예를 들어 김장을 한다고 가정했을때 김치를 만드는데 필요한 배추, 고추가루, 소금을 갖다 놓는다고 김치가 되지는 않는다.  김치를 만들기 위해 배추를 다듬고 행구고 소금과 물을 이용하여 절이고, 고추가루와 젓갈 등을 이용하여 양념을 만들고 버무리는 과정으로 김치가 완성된다. 김치가 완성되었다고 끝나는것이 아닌, 김치냉장고를 이용하는 등의 보관하는 방법도 필요하다. 또한 김치는 배추김치 뿐만아니라 깍두기, 겉절이, 물김치, 오이소박이 등 종류에 따라 재료와 만들고 보관하는 과정이 크게 차이 날 수 있다.

 

시스템 디자인도 이와 비슷하다. 어떠한 시스템을 구축하기 위한 어떠한 재료를 준비하여 어떤 요구사항에 따라 어떻게 설계를 할지에 대한 과정이다.

 만약 Server가 한국에 있고, 잉글랜드의 Client에서 한국의 Server에 요청을 보낼때 데이터 전송을 위한 시스템을 어떻게 구축 해야될지, 어떤 알고리즘을 사용하여, 어떤 네트워크를 구축할 지, 어떤 네트워크 통신을 이용하게 할 지, 만약 Server가 과부하가 걸렸을때 어떤 대처를 해야 될지, 이러한 상황을 예방하기 위해 어떤 시스템을 구축해 놓을지 등등 소프트웨어 하드웨어 시스템을 설계하기 위한 모든것이 포함된다.

 

시스템 디자인을 위해 고려해야 될 부분은 여러가지가 있다.

 - Low Latency : 요청/응답의 짧은 지연

 - System reliability : 시스템의 신뢰성

 - System scalability : 시스템의 확장성

 - System performance : 시스템의 성능

 - Cost effective : 비용 효율성

 - Data consistency : 데이터의 일관성

 - Security : 보안

 - 그 외 등등 많다

 

이러한 시스템 디자인에 대한 스터디내용과 공부한 것을 정리를 해나갈 예정이다.

그리고 시스템 디자인을 공부하는 목적은 시스템 디자인이 왜 중요한가에 대한 명확한 정의를 내릴 수 있는 능력을 기르기 위함이다.

 

 현재는 위의 질문에 대하여 명확한 결론을 내릴 능력이 없다.

 어릴적 부터 사용한 어플리케이션, 인터넷 통신, 컴퓨터 구조, 디바이스 등등 시스템이 이미 구축이 되어있고 이러한 시스템을 사용하는 것에 익숙해져 있고 당연시 생각하고 있었지만, 개발자로써 프로젝트에 참여하여 일하고, 개인 프로젝트를 진행하며 느낀점은 아주 간단한 프로그램의 설계라도 절대 빼놓을 수 없을 정도로 중요한 것을 깨달았다. 

 

 더 나은 개발자가 되기위해 시스템 디자인을 공부하여 어떠한 프로젝트를 진행하더라도 현명하게 구축할 수 있도록 연습하며 상기 목표를 달성하고 지속적인 발전을 해나가고 싶다.

'시스템 디자인' 카테고리의 다른 글

시스템 디자인 5주차  (0) 2021.08.13
시스템 디자인 4주차  (0) 2021.07.31
시스템 디자인 3주차  (0) 2021.07.21
시스템 디자인 2주차  (0) 2021.07.18
CDN  (0) 2021.07.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함