CS

[Architecture] (1) 소프트웨어 아키텍처를 알아야 하는 이유

Joonfluence 2023. 6. 8.

서론

오늘은 소프트웨어 아치텍처에 관해서 알아보도록 하겠습니다.

소프트웨어 아키텍처, 왜 배워야 할까?

여러분은 개발자와 소프트웨어 엔지니어의 차이를 아시나요? 저는 이 차이가 소프트웨어를 단순히, 개발하는 능력에만 국한되는 것이 아니라, 시스템 요구사항을 분석하고 개발할 수 있는 능력에서 온다고 생각합니다.

일반적으로 소프트웨어를 만들기 위해서는 기획 요구사항과 디자인에 대해 분석하고 개발합니다. 웹 프로그램을 만든다고 하면, 화면 설계에 맞게 UI와 페이지 디자인을 구현하고 DB ERD를 설계하고 백엔드 로직을 작성합니다. 개발은 이렇게 끝날 수 있습니다. 그렇지만 이렇게 한다고해서 시스템 요구사항을 만족시키느냐? 그렇지 않습니다. 

대체, 시스템 요구사항이 뭔데?

시스템 요구사항이란 다음 6가지 기준을 따릅니다.

  • Performance
  • Scalability
  • Reliability
  • Security
  • Deployment
  • Technology Stack

이 6가지 기준은 각각 함께 쓰이는 것과 별도로 쓰이는 것이 존재합니다. Performance는 latency(지연시간)을 최소화하고 throughput(처리량)을 늘리기 위한 방법을 고민합니다. Scalability는 100만명의 동시접속자가 발생했을 때, 어떻게 대처할 것인가에 관해 고민합니다. Reliability는 시스템이 실패에 얼마나 빠르고 탄력적으로 회복 할 수 있는지에 관해 고민합니다. Security에서 고민하는 것은 데이터 전송, 저장, 인가와 인증, 해킹에 대한 대응이 있겠습니다. Deployment는 앞서 Performance, Scalability, Reliability, Security가 고려된 시스템을 어떻게 배포할 것인지를 다룹니다. Technology Stack은 각 요소들을 구현하기 위해, 어떤 기술과 플랫폼을 선택할 것인지에 관해 고민합니다.

결론

오늘은 소프트웨어 아키텍처에 관해 왜 배워야 하는지에 관해서 짧게 살펴보았습니다. 어떤 주제를 다루는지 아는 것만으로도 새로운 시야가 트일 때가 있습니다. 소프트웨어 아키텍처에 관한 내용들을 자주 포스팅할테니, 앞으로 잘 봐주시길 부탁드립니다.

반응형

댓글