
아기텍쳐는 건물을 설계할 때 뼈대와 구조를 잡는 것처럼, 소프트웨어 개발에서도 시스템의 전체적인 구조와 설계를 말하는 것이다.
복잡한 시스템은 그냥 코딩만 해서는 끝낼 수 없다. 복잡한 시스템을 다루는 일이 없겠다고 생각할 수도 있지만, 잘 계획된 아키텍쳐는 무조건적으로 좋다. 서점을 가도 깔끔하게 정리 된 서점과 도대체 어디에 뭐가 있는지 알 수 없는 서점을 생각해보자.
소프트웨어도 구조적으로 설계해야 효율적이고, 추 후에 고치거나 확장하기도 편하다.
코드가 진행될수록 엉망진창이 될 것이고 유지보수도 어렵다. 심지어 새로운 기능을 추가할 때 고된 노동과 시간이 필요하게 된다.
조직화 : 코드와 기능을 어떤 기준으로 나눌지 정함.
예 : 회원 관리, 주문 처리, 결제 등 모듈화
통신 방식 결정 : 서로 다른 부분(컴포넌트)이 어떻게 대화할지 정함.
예 : REST API, 메시지 큐, 이벤트 기반 처리
성능 최적화 : 빠르고 효율적으로 작동할 수 있게 설계.
에 : 데이터베이스 연결, 캐싱 전략
확장성 : 추 후에 기능이 추가되거나 사용자 수가 늘어나도 쉽게 확장할 수 있게 함.
안정성 : 장애가 발생하더라도 최소한의 영향을 받게 설계.