우테코 2주 차 문제를 풀다 MVC Pattern을 알게 되어 공부하고 문제에 적용해봤습니다.
추가적으로 소프트웨어 아키텍처를 살펴보다 네트워크의 구조가 궁금해져 OSI 7 Layer에 대한 내용도 추가했습니다.
<MVC Pattern : 소프트웨어 아키텍처 중 하나. Model, View, Controller 를 분리해 코딩하는 방식으로, 유지보수가 편해지는 코드 구성 방식.>
- MVC의 구성
Model: 데이터와 관련 부분. 비즈니스 로직을 수행해 데이터를 처리함
View: 사용자에게 보여지는 부분. 데이터의 시각화
Controller: Model 과 View를 이어주는 부분. 데이터의 흐름 제어
- MVC의 흐름
1. User가 필요한 기능 Controller에 요청
2. 요청을 받은 Controller가 적절한 Model에게 비즈니스 로직 수행 맡김
3. Model은 수행 결과를 다시 Controller에게 줌
4. Controller는 알맞은 View를 선택해 화면을 출력하도록 함
- MVC의 장점
구성요소들의 재사용 : 사용 환경이 변경될 때 (앱 --> 웹) Model은 그대로 사용하면서 View, Controller만 변경해 구현 가능
중복 코딩 제거
각 요소들에 집중
- MVC의 단점
코딩이 거대해지면 Controller가 너무 커지며, 중복 코드 발생
DB 접근 시 주체가 조금 애매해짐 (Controller가? Model이?)
이를 해결하고자 5-layer로 세분화함.
-MVC 코딩 방법
1. Model 에는 Controller와 View 관련 코드가 있으면 안 된다.
2. View 에는 Model의 코드만 있을 수 있고, Controller의 코드가 있으면 안 된다
3. View 가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보이는 데이터만 받는다.
4. Controller는 Model과 View관련 코드가 있을 수 있다.
5. View는 Controller로부터 Model의 데이터를 받아야 한다.
* 5-layer
1. Presentation Layer
2. Control Layer
3. Business Logic Layer
4. Service / Domain
5. Persistance Layer
<OSI 7 Layer: Layered 아키텍처를 따르며, 네트워크 시스템의 구조를 설명하는 아키텍처 중 하나.>
1. Physical Layer
두 대의 컴퓨터에서 신호를 주고받을 때, 디지털 신호를 아날로그 신호로 바꿔서 전송함.
이유: 컴퓨터를 연결한 전선은 특정 Hz의 주파수만 전송 가능한데, 디지털 신호는 0~무한 Hz를 가지기 때문에 아날로그로 바꿈
이때 아날로그 -> 디지털 변환 : encoder / 디지털 -> 아날로그 변환 : decoder를 통해 진행
구현 : 하드웨어적으로 구현되어 있음. (PHY 칩)
* 컴퓨터와 컴퓨터 연결하는 방법
컴퓨터 - 컴퓨터 연결 시 스위치라는 허브? 에 여러 대의 컴퓨터를 연결함. 연결된 더미를 하나의 네트워크라 부를 수 있음
스위치의 역할: 데이터의 목적지를 파악해 특정 컴퓨터에 데이터를 전송함
라우터: 스위치 - 스위치를 연결 즉 서로 다른 네트워크에 속한 컴퓨터끼리 통신 가능하게 해주는 장비
스위치 장비가 라우터의 역할도 하며 서로다른 네트워크를 연결해 주기도 함.
인터넷 : 전 세계의 컴퓨터들이 스위치, 라우터를 통해 계층구조로 연결되어 있는 것
2. Data-Link Layer
같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해 필요한 모듈
데이터의 앞 뒤에 특정 비트열을 붙여 보내 데이터의 시작, 끝을 파악 (Framing)
Framing은 Data-Link Layer에 속하는 작업들 중 하나
구현 : 하드웨어적으로 구현되어 있음. (RAN 카드)
3. Network Layer
더 많은 컴퓨터 사이의 통신. 수많은 네트워크들의 연결(inter-network) 속에서 어딘가에 있는 목적지 컴퓨터로 데이터 전송
--> IP 주소를 이용해 길을 찾고(routing), 상위 혹은 하위 라우터에게 데이터를 넘겨주는 것 (forwarding)
만약 우리가 네이버에 있는 컴퓨터로 데이터를 보낼 때, 데이터 앞에 IP주소를 붙여서 보내게 됨.
IP 주소 아는 방법: DNS를 통해 도메인 주소를 IP주소로 변환함!
패킷: IP 주소 + Data
컴퓨터는 패킷을 라우터(스위치)에 보냄
라우터는 패킷을 해석해 주소가 위치한 라우터까지 보냄 (라우터가 주소를 해석하는 방법은 따로 공부 필요)
구현: 운영체제의 커널에 소프트웨어적으로 구현되어 있음.
4. Transport Layer
프로세스: 실행 중인 프로그램
포트 번호: 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수 값
1. 데이터를 받고자 하는 프로세스들은 포트 번호(Port Number)를 가지고 있음.
2. 송신자는 데이터를 보낼 때 수신자 컴퓨터에 있는 프로세스의 포트번호를 붙여서 보냄
컴퓨터는 받은 데이터를 프로세스들에게 나눠주려 함. 이때 어떤 데이터를 무슨 프로세스에게 줘야 할지 알기 위한 모듈
즉 포트 번호를 사용해 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈
구현: 운영체제의 커널에 소프트웨어적으로 구현되어 있음.
* Session Layer, Presentation Layer
현대의 인터넷은 OSI 모델이 아니라, TCP/IP 모델을 따르고 있음.
OSI Model의 5,6,7번 Layer(Session, Presentation, Application Layer)는 TCP/IP Model의 5번 Layer(Application Layer)로 합쳐짐! 현대 가장 많이 쓰이는 TCP/IP 모델에 따라 나머지 3개 Layer는 Application Layer 1개로 설명.
5. Application Layer
TCP/IP 소켓 프로그래밍 : 운영체제의 Transport Layer에서 제공하는 API를 활용해 통신 가능한 프로그램을 만드는 것.
+ 자신만의 Application Layer 인코더와 디코더를 만들 수 있다.
클라이언트& 서버 패러다임
HTTP: 대표적인 Application Layer 프로토콜
'코딩 > Software Architecture' 카테고리의 다른 글
| [GoF Design Pattern] Prototype (0) | 2022.12.03 |
|---|---|
| [GoF Design Pattern] Proxy (0) | 2022.12.02 |
| [GoF Design Pattern] Factory Method, Observer (0) | 2022.12.01 |
| [GoF Design Pattern] Singleton, Bridge, Template, Adapter (0) | 2022.11.26 |
| [GoF Design Pattern] 개요, Strategy, Iterator (0) | 2022.11.19 |