[kafka] 카프카 개념 공부 전, 아키텍처
아키텍처 (Architecture)
목표하는 대상에 대하여 그 구성과 동작 원리, 구성 요소 간의 관계 및 시스템 외부 환경과의 관계 등을설명하는 설계도 혹은 청사진을 말한다.
라고 나무위키 첫 줄에 적혀있지만...
시스템 아키텍처, 소프트웨어 아키텍처, 데이터 아키텍처, 네트워크 아키텍처 등 분야를 명시하여 부른다고 한다.
그 중 카프카 개념 공부를 하기 위해 소프트웨어 아키텍처 에 대해 개념을 정리해보았다.
사실 여러 사이트를 방문하며 검색해보았으나 명확하게 딱 소프트웨어 아키텍처는 XXX이다! 라는 결론은 없는 것 같다.
그래도 가장 가까운 정의를 말하자면
구성 요소들 간의 관계, 환경, 설계와 발전을 관리하는 원칙으로 이루어진 시스템의 근본적인 구조
- ANSI/IEEE std 1471-2000
라고 한다.
결국 내 눈높이에서 알아들은 대로 쓰자면 아키텍처는 내가 어떤 코드를 짜고자 할 때, 시작하기 전 미리 설계도를 그려 놓는 것 을 말하며
예를 들어 아이디와 비밀번호를 입력 후 로그인 버튼을 눌렀을 때 일어나는 이벤트 코드를 작성한다고 했을 때
1. Model 단에서는 어떤 것이 필요하며 구조는 어떠한가?
2. View 단에서는 어떤 것을 보여주며 어떤 이벤트를 발생 시키는가?
3. Controller 단에서는 어떤 함수를 사용하여 이벤트를 진행시키는가?
에 대해 간략하게 그림으로 표현한 것 이라고 뭉퉁그려 생각하기로 했다.
참고 출처
1. 유튜브 데브원영 DVWY - [마틴 파울러] 소프트웨어 아키텍처의 중요성 (한글 자막)
https://www.youtube.com/watch?v=4E1BHTvhB7Y
2. 나무위키 - 아키텍처
https://namu.wiki/w/%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98
3. KISA 한국 인터넷 진흥원 - 소프트웨어 아키텍처 기반 설꼐 모델 및 명세기법 개발
https://www.kisa.or.kr/204/form?postSeq=012241&lang_type=KO&page=#fnPostAttachDownload