<기초 지식>
Web
인터넷을 기반으로 한 정보를 공유, 검색할 수 있게 하는 서비스
URL(주소),HTTP(통신규약),HTML(내용)
Server
클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템
Web Server
인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터
3계층 구조(3 Tier- Architecture)
정의: 브라우저(프레젠테이션계층)-서버-데이터 계층으로 구성되어 있습니다. 이 구조는 각 계층의 역할을 명확히 분리하여 모듈화된 설계와 유지보수를 가능하게 해줍니다.
프레젠테이션 계층 (브라우저) : 나는 책을 읽는 사람이야.
이것은 컴퓨터나 스마트폰에서 사용하는 인터넷 창문이에요. 유튜브나 네이버 같은 웹사이트를 볼 때 사용하죠. 여러분이 뭔가를 보고 싶거나 요청하고 싶을 때 이 창문을 통해 말하는 거예요. (브라우저=클라이언트=프리젠테이션 계층)
역할: 사용자와 직접 상호작용, 웹 브라우저에서 UI를 제공하고,
사용자가 입력한 데이터를 서버에 전달
기술: HTML, CSS, JavaScript 등을 사용하여 웹페이지를 렌더링
비즈니스 로직 계층 (서버) : 나는 도서관 사서야.
서버는 인터넷의 도서관 사서 같아요. 여러분이 브라우저를, 통해 뭔가를 요청하면, 서버가 그 요청을 받아들이고 필요한 정보를 찾아 다시 여러분에게 보내줍니다.
역할: 애플리케이션의 핵심 로직을 처리. 사용자 요청을 받아 비즈니스 규칙에 따라 처리한 후, 데이터베이스와 상호작용
기술: Node.js, Python (Django, Flask), Java (Spring), PHP 등 다양한 서버 기술이 사용된다. 인증, 권한 관리, 데이터 유효성 검사, 캐싱 등의 기능을 구현
데이터 계층 (데이터베이스) : 나는 도서관이야. 책들이 많이 보관되어 있어.
이건 인터넷의 큰 창고라고 생각하면 돼요. 모든 중요한 정보가 여기에 저장되어 있어요. 예를 들어, 유튜브 동영상들이나 네이버의 뉴스 기사들이 이 창고에 보관되어 있습니다.
역할: 데이터를 저장하고 관리하는 계층. 서버의 요청에 따라 데이터를 삽입, 수정, 삭제, 조회.
기술: 관계형데이터베이스(MySQL, PostgreSQL)나 NoSQL 데이터베이스 (MongoDB, Oracle) 가 주로 사용됩니다. ORM(Object-Relational Mapping)을 통해 애플리케이션 계층과 효율적으로 연동됩니다.
어떻게 서로 연결될까요?
- 브라우저에서 요청: 네가 검색창에 보고싶은 것을 입력해. (예: 강아지 동영상 보기)
- 서버로 이동: 서버가 너의 요청을 받아서, 데이터베이스에 필요한 정보를 찾으러 가.
- 데이터베이스에서 찾기: 데이터베이스가 강아지 동영상을 찾아서 서버에게 줘.
- 서버가 전달: 서버가 그 정보를 다시 브라우저로 보내줘.
- 브라우저에 보여줌: 브라우저가 강아지 동영상을 네 화면에 보여줘.
장점
1. 신속한 개발 : 각 계층이 서로 다른 팀에서 동시에 개발될 수 있으므로 업무 효율성이 증가고 신속한 어플리케이션 출시가 가능해집니다.
2. 확장성 개선 : 필요에 따라 임의의 계층을 다른 계층과 독립적으로 확장할 수 있습니다.
3. 안정성 향상 : 각 계층이 명확하게 분리되어 있기 때문에 한 계층의 가동 중단이 다른 계층에 미치는 영향이 적습니다.
4. 보안성 강화 : 클라이언트가 데이터베이스와 직접 통신할 수 없기 때문에 보안성도 강화됩니다.
단점
1. 초기개발의 복잡성 증가
2. 각 계층 간 통신으로 인한 약간의 성능 저하 가능성
결론적으로, 3계층 구조는?
3계층 구조는 프레젠테이션계층, 비즈니스 계층, 데이터 계층으로 나누어, 각 계층이 독립적으로 관리될 수 있습니다. 코드의 유지보수성을 높이고, 시스템을 확장하기 쉽게 만드는 장점을 가지고, 이 구조를 통해 각 계층은 명확하게 역할을 분담하여 개발과 유지보수를 효율적으로 진행할 수 있습니다.
+ 더 알아보고 싶다면 +
등장배경
초기의 정적 웹페이지에서 시작하여, 동적 콘텐츠와 복잡한 상호작용이 요구되는 현대의 웹 애플리케이션으로 발전하면서, 더욱 체계적이고 효율적인 구조의 필요성이 대두되었습니다. 3계층 구조는 이러한 요구에 대한 해답으로, 1990년대 중반부터 널리 채택되기 시작했습니다.
구현시 고려사항
1. 계층 간 연계 : 계층 간 명확한 인터페이스와 통신 메커니즘을 정의해야 합니다.
2. 성능 최적화 : 각 계층의 로직과 데이터 전달을 최적화하여 전체 시스템 성능을 높여야 합니다.
3. 보안 및 안전성 : 데이터 무결성과 보안, 장애 대응 등 비기능적 요구사항을 고려해야 한다.
미래전망
1. 마이크로서비스 아키텍처와의 결합
2. 서버리스 컴퓨팅의 도입
3. 엣지 컴퓨팅을 활용한 성능 개선, 이러한 변화 속에서도 3계층 구조의 기본 원칙은 여전히 유효.
사진 참고 : https://jaws-coding.tistory.com/9
3계층 구조(3 Tier- Architecture) 이해하기 [스마트인재개발원]
3계층 구조(3 Tier- Architecture) 란? 어떠한 플랫폼을 3계층으로 나누어 별도의 논리적/물리적인 장치에 구축 및 운영하는 형태 웹 서버 운영을 예로 들면 서버 한대에 한꺼번에 모든 기능들을 구축
jaws-coding.tistory.com
TIL 24일차 - [데이터베이스] 관계형 데이터베이스
In-MemoryJavaScript에서 데이터를 다룰 때 저장할 수 있는 데이터이다. 프로그램이 실행될 때에만 존재하는 데이터이며 데이터의 수명이 프로그램의 수명에 의존하기 때문에 데이터의 보호가 힘들
velog.io