※ 본 게시물은 컴퓨터 및 프로그래밍을 공부 중인 비전공자가 개인적인 공부를 위해 적어둔 것으로 내용이 정확하지 않을 수 있으며, 언제든지 추가되거나 수정될 수 있음.
당신은 쇼핑몰을 운영하는 사장이며, 상품의 온라인 판매를 위해 쇼핑몰 앱을 만들었다고 가정하자.
당신은 앱에 판매하려고 하는 상품을 등록할 것이다. 이때 상품에 대한 정보가 모두 앱 안에 들어가 있다면 어떻게 될까?
새로운 상품을 등록하거나 상품의 재고 현황 반영 등 수정이 필요할 때마다 일일이 앱 전체를 업데이트해야 한다. 매장 내에 재고가 하나 줄어들었다면 앱 내의 재고 현황에 반영해야 할 텐데 변경사항이 있을 때마다 매번 업데이트한다면 여간 번거로운 일이 아닐 수 없다. 현실에서는 실현 불가능에 가까운 운영방식이다.
온라인 결제 역시 불가능할 것이다. 온라인 결제는 은행 서버와의 연결이 필요하기 때문이다. 정말 앱 하나만으로 운영을 한다면 고객이 주문을 했을 때 앱을 업데이트하고 재고를 반영한 후에 다시 업데이트...주문 내요ㅇ이러ㅔㅓㅈㄷ(현실적으로 있을 수 없는 시스템)
위의 문제를 해결하기 위해서는 실시간 반영이 가능하고, 은행 등의 다른 곳과 연계할 수 있는 '서버'가 필요하다. 상품 정보 등의 리소스를 사용하는 '앱'과 리소스 정보를 앱에 전달하는 '서버'를 분리 운영한다면 위의 문제는 모두 해결될 것이다. 이를 2 티어(2-Tier) 아키텍처 또는 클라이언트-서버 아키텍처라고 부른다.
고객은 클라이언트를 통해 상품 정보를 조회하며, 실제 상품 정보를 클라이언트에 전달하는 것은 서버이다. 이때 고객의 요청이 클라이언트를 통해 서버로 전달된다. 일반적으로 서버는 데이터베이스라는 리소스 저장 공간에서, 고객의 요청에 대한 응답을 찾고, 이를 클라이언트에게 전달한다. 응답을 받은 클라이언트는 고객이 요청한 정보를 보여준다. 이를 클라이언트-서버 아키텍처에 데이터베이스가 추가된 3 티어 아키텍처라고 부른다.
'넓고 얕은 CS 지식' 카테고리의 다른 글
컨텍스트 스위칭 & PCB 10초 요약 정리 (0) | 2023.02.18 |
---|---|
Git과 명령어 (0) | 2022.08.29 |
리눅스 터미널 (0) | 2022.08.26 |
프론트엔드와 백엔드의 차이 (0) | 2022.08.22 |
컴퓨터의 구성요소 (0) | 2022.08.22 |