Day2-웹개발 기초(2~3)

정채림·2025년 12월 30일

서버

하드웨어로서의 서버와 소프트웨어로서의 서버. 두가지 의미가 있음.
백엔드 개발자는 후자인 소프트웨어인 서버로 개발을 하게된다.

하드웨어로서의 서버

Hardware는 컴퓨터를 구성하는 물리적인 부품을 말하며, 눈으로 보고 만질 수 있는 모든 장치를 말함.
Server로 사용되는 Hardware는 고성능 컴퓨터 본체를 말하며, 24시간 켜놔도 무리가 없어야 함.
Client의 요청에 항상 응답하기 위해 거의 항상 켜져 있어야 하며, 고정된 IP 주소를 가져야 합니다.

Cloud Service

AWS, Google 등 대형 회사가 Hardware로서의 Server를 인터넷상에서 대여해 주는 서비스입니다.

소프트웨어로서의 서버

Software로서의 Server는 Hardware 안에서 실행되는 프로그램이며, Client의 요청을 듣고 응답하도록 설계되어 있음.
컴퓨터에는 수없이 많은 Port가 구성되어 있으며, 이는 Client의 요청을 받아들이고 응답을 보내주는 창구 역할을 함.
각 Port는 연결된 서비스만을 담당하며, 적절한 요청이 들어오면 해당 서비스의 Software에 연결되어 응답을 생성함.

서버의 주요 역할

  1. 웹파일 제공 : HTML, CSS, Javascript 같은 정적파일을 제공함.(정적)
  2. API 제공 : 클라이언트의 요청에 응답을 해주는 Endpoint를 제공함.(동적)

서버는 클라이언트의 모든 요청에 응답해야하며, 먼저 신호를 보내는 일은 일반적으로 없다.

HTTP

REST API

API(Application Programming Interface)

사람 대신 프로그램이 소통하기 위한 접점.
프로그램을 원하는 데이터와 기능으로 안내하는 규칙

REST

Representatopnal State Transfer의 약자로 API를 설계하는 표준 원칙.
API 설계 방식을 예측 가능하고 표준적으로 약속하기 위해 필요함.

REST의 구성요소

  1. 리프레젠테이션
  2. 스테이트
  3. 트랜스퍼

REST

1. 클라이언트 서버 역할 분리 : 클라이언트는 유저 경험만, 서버는 데이터와 로직만을 책임지고 완전히 독립되어야 한다.
2. 무상태성 : HTTP의 무상태성과 똑같으며 클라이언트의 이전 상태를 서버가 기억하지 않고 독립적으로 처리함을 말한다.
3. 주문형 코드
4. 캐셔블
5. 계층형 시스템
6. 균일한 인터페이스 : 모든자원이 고유한 주소로 식별되어야 하며, 클라이언트는 하더와 status code를 통해 자신의 상태를 설명할 수 있어야함.

REST API 명세서

API 명세서 도출을 위한 질문

  1. Who
  2. What
  3. How
  4. Parameter
  5. Return

요청 명세서의 필수 구성요소

  • Method
  • Endpoint
  • 요청 파라미터
  • 헤더정보
  • Body

프론트엔드

프레임워크

실질적으로 HTML+CSS+JS로 만들어진 수천 수만 줄의 코드를 관리하는 것은 불가능에 가까워진다
이를 관리하기 위해 생긴 것이 프레임워크(Framework)이다.

핵심 역할

  1. 컴포넌트 : 기능 단위로 쪼개진 것. 재사용과 수정이 용이함.
  2. 상태관리 : 상태(state)는 웹사이트가 기억해야할 데이터로 이를 관리하는 것을 도와 줌.

프레임워크의 종류

React : 전세계에서 가장 많이 사용되는 프레임 워크. 그만큼 참고할 소스가 많음.
Vue.js : 문법이 간결하다는 것이 특징. 가볍고 빠르게 보여줄 수 있음.
Svelte : 후발주자라 소스가 적음.

백엔드

프레임워크

Spring : Java 베이스의 안정성과 신뢰도가 높은 프레임워크
Node.js : Javascript 기반의 빠른 속도와 실시간 처리가 빠른 프레임워크
Django/Flask - python : 문법이 간결하고 개발속도가 빠름. 데이터 분석/AI와 궁합이 좋음.

"역할"에 따라 코드를 분리함.

계층형 아키텍처

  • Controller : API를 관리하는 역할.
  • Service : 실제 비즈니스 로직을 담당하는 역할
  • Entity : 서비스가 처리하는 서버자원을 의미함.
  • Repository : 데이터베이스와 통신하는 역할만을 담당.

한 계층을 변경해도 다른 계층을 변경할 필요가 없음!

Controller > Service > Repository 로 요청을 보내고
Repository > Service > Controller로 응답 을 보낸다

데이터베이스

데이터를 저장하는 것을 넘어 데이터를 관리하기 위한 전문 시스템.

데이터 베이스의 특성

  • 영속성 : 서버를 재시작하여도 데이터가 보존됨
  • 구조화 : 데이터를 체계적으로 분류하고 저장함
  • 동시성 : 동시에 여러곳에서 접근하여도 데이터에 문제가 생기지 않음
  • 무결성/일관성
  • 질의(Query) : 데이터베이스마다 고유한 방식의 쿼리를 통해 데이터를 조작 가능

RDB(관계형 데이터베이스)

  • MySQL, PostgreSQL, Oracle
  • 테이블에 데이터를 저장하고 구조화된 관계를 바탕으로 데이터를 관리함

    데이터의 일관성과 명확성이 있음.
    은행이나 예약 시스템에 사용

NoSQL(비관계형 데이터베이스)

  • Firebase Firestore, MongoDB, Redis
  • 데이터를 JSON의 형태 등으로 자유롭게 저장함.

    빠른 속도와 유연한 확장성이 장점.
    공용 쿼리 언어가 없음
    SNS 등의 데이터 구조가 바뀌기 쉬운 곳에 매우 유용

느낀점

REST API를 받아서 쓰기만 했지 실제로 어떤 것인지 잘 모르고 쓰고 있었다.
RESTful한 API를 설계하기 위해서는 어떤 것들을 고려해야하는지 이제 다른 사람에게 설명할 수 있을 것이다.

0개의 댓글