반응형
이 글은 2024년에 진행하는 네이버 부스트캠프 웹모바일 9기 멤버십 프로그램의 일자별 학습 내용을 정리한 글이다.
부스트캠프에서 제공하는 모든 콘텐츠는 외부 유출이 금지되며, 이 글에서는 직접적인 내용을 포함하지 않는다.
학습 내용
소프트웨어 아키텍처
- 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙
- 소프트웨어 요소, 요소 간의 관계, 요소와 관계의 속성으로 구성
- 시스템의 청사진 역할을 하며, 시스템의 전체적인 구조를 정의하고 각 요소 간의 관계와 설계 지침을 세우는 데 초점
- 책임을 분리해 결합도를 낮추고, 확장, 테스트, 유지 보수에 이점 제공
- 소프트웨어 디자인 패턴과 유사하지만 더 큰 범주에서의 설계 담당
소프트웨어 아키텍처 패턴
계층화 패턴
- n-tier Architecture Pattern
- 소프트웨어 시스템을 여러 계층으로 분리해, 각 계층이 특정 역할을 담당하게 하는 구조
- 각 하위 모듈들은 특정한 수준의 추상화를 제공하며, 각 계층은 다음 상위 계층에 서비스를 제공
- 일반적인 4-tier 아키텍처 패턴 구조
- 프레젠테이션 계층(Presentation Layer)
- 사용자 인터페이스를 담당하며 데이터를 표시하고 사용자로부터 입력을 받아들여 서버와 통신하는 계층
- 비즈니스 계층(Business Layer)
- 프레젠테이션 계층에서 전송받은 입력에 따라 영속 계층에서 처리된 데이터를 가져와 비즈니스 로직을 수행하고 그 결과를 프레젠테이션 계층으로 전송하는 계층
- 영속 계층(Persistence Layer)
- 데이터베이스 계층과 통신하며 SQL Query 등으로 데이터를 가져오고 처리하는 계층
- 데이터베이스 계층(Database Layer)
- 처리된 데이터를 저장하고 관리하는 계층
- 프레젠테이션 계층(Presentation Layer)
MVC
- Model-View-Controller Pattern
- 대화형 애플리케이션을 Model, View, Controller 세 부분으로 나눈 구조
- Model
- View에 표시하기 위해 필요한 데이터, 비즈니스 로직 정의
- View
- Controller부터 받은 데이터 표시
- 하나 이상의 View가 정의될 수 있음
- Controller
- 사용자로부터의 입력 처리
- Model을 통해 받은 데이터를 처리하고, 결과값을 View에 반환
- Model
- 사용자의 요청이 Controller로 들어오면, Controller는 요청에 맞게 Model을 업데이트하고, View를 업데이트해 갱신된 Model을 사용자에게 보여줌
- 컨트롤러가 여러 개의 View를 선택할 수 있는 1:N 구조
- View와 Model 사이의 의존성이 높아 앱이 커지면 유지보수가 어려워짐
MVP
- Model-View-Presenter Pattern
- MVC 패턴에서 파생돼, Controller 대신 Presenter 사용
- Presenter
- View와 Model 사이의 중재자 역할
- 비즈니스 로직을 처리하고 View를 업데이트함
- Presenter
- 사용자의 행동이 View로 들어오면, View는 데이터를 Presenter에 요청하고, Presenter는 Model에 데이터를 요청한 후 이를 가공해 View에게 응답하고 View는 해당 데이터에 따라 갱신함
- MVC가 가지는 View와 Model 사이의 의존성을 해결했으나, View와 Presenter 사이의 의존성이 높음
MVVM
- Model-View-ViewModel Pattern
- 프로그램의 비즈니스 로직과 프레젠테이션 로직을 UI로 명확하게 분리
- ViewModel
- Model의 데이터를 View에 맞게 변환
- View에 바인딩돼 View는 ViewModel의 상태 변화를 자동으로 감지함
- ViewModel
- 사용자의 행동이 View로 들어오면, View는 ViewModel에 행동을 전달하고, ViewModel은 Model에 데이터를 요청한 후 그 데이터를 가공해 바인딩을 통해 View로 전달함.
- MVP 모델에서 View와 Presenter는 1:1 관계를 형성하나, MVVM 모델에서 View와 ViewModel은 1:N 관계를 형성함
- 데이터 바인딩을 통해 View와 ViewModel 사이의 의존성을 없앨 수 있음
- 데이터 바인딩에 대한 이해가 필요하고, ViewModel 설계가 복잡함
느낀점
멤버십이 벌써 3주가 다 돼가는데, 지금도 구현한 건 얼마 없긴 하지만 3주가 다 돼가서야 드디어 웹 개발에 감이 잡히기 시작했다. 이전까지는 어떻게 진행돼가는지도 모르고 일단은 되는대로 작업했다는 느낌이 강했는데, 그렇게 쌓인 기술 부채들을 하나하나 해결해나가면서, 그리고 다른 사람들이 어떤 식으로 구현하는지 참고하면서 점점 익숙해지기 시작했다. 특히 소프트웨어 설계 과정이나 소프트웨어 아키텍처 같은 이론들은 이전에 정보처리기사를 공부했을 때 외웠던 이론들인데 당시에는 경험이 없어서 막연하게 외웠던 것들인데, 이번에 리팩토링하는 데 직접 아키텍처를 적용해보면서 이름만 안다 수준의 내용들이 머릿속에 조금이나마 그려지는 수준으로 이해되기 시작했다. 느리지만 착실하게 쌓여가고 있음을 깨닫고 나니 조급함과 불안함이 점점 사라져가는 것 같다. 꾸준히 배우자. 언젠가는 그들처럼 성장할 수 있겠지.
반응형
'네이버 부스트캠프 > 멤버십' 카테고리의 다른 글
[네이버 부스트캠프 9기 멤버십] Day 17 학습 정리 (0) | 2024.09.11 |
---|---|
[네이버 부스트캠프 9기 멤버십] 3주차 회고 (0) | 2024.09.08 |
[네이버 부스트캠프 9기 멤버십] Day 13 학습 정리 (0) | 2024.09.05 |
[네이버 부스트캠프 9기 멤버십] Day 12 학습 정리 (0) | 2024.09.04 |
[네이버 부스트캠프 9기 멤버십] Day 11 학습 정리 (0) | 2024.09.03 |