웹개발
백엔드 웹 개발의 기초
lukeit
2024. 8. 16. 14:14
다루는 내용:
Backend Web Developing
- API: Client가 필욯하는 데이터를 반환함
- Backend Developer가 생각해야되는것: Client가 원하는 데이터를 어떻게, 잘 반환할까?
- 어떻게 = 방법 (REST API, GraphQL, Queue, Web Socket, ...)
- 잘 = 속도 + 가용성
- 가용성 (Availability): 시스템에 문제가 생겨도 시스템을 계속 이용할 수 있는가
- 두가지 Aspect에서 생각해야됨:
- 웹 서비스를 제공하는 입장에서 (개발자의 입장)
- 웹 서비스를 제공받는 입장에서 (AWS, Google Cloud, Naver Cloud, ...)
- 좋게 만드는 방법:
- MSA (Microservice Architecture)
- Using Multiple Servers with Load Balancing
- 두가지 Aspect에서 생각해야됨:
- 잘:
- 요청~응답의 속도 및 대량 트래픽 커버
- 데이터 조회를 위한 DB내 Query 수행 시 쿼리를 효율정으로 작성해 소요시간 축소
- 대량 트래픽에 기인한 DB 조회 시, 부담 축소 및 속도 향상을 위한 로컬 / 글로벌 Cache 도입
- 대량 트래픽에 따른 다중 DB 접속 시 동시성 처리
- 동시성: 순차적으로 수행되도록 Transaction이라는 기술을 도입해야함
- "직렬화 (Serializable)"을 사용함
- 단점: 느림!
- 해결방법: 각 Transaction의 Isolation 레벨을 낮춤
- Transaction의 실행을 겹치게 해서 각 Transaction 사이에 gap을 줄임
- "직렬화 (Serializable)"을 사용함
- 동시성: 순차적으로 수행되도록 Transaction이라는 기술을 도입해야함
- 가용성 (Availability): 시스템에 문제가 생겨도 시스템을 계속 이용할 수 있는가
- CRUD: Create, Read, Update, Delete
- 왜 데이터가 필요한가: 어떤 유저가 행위를 하면 저장해두어야 온전하게 처리가 가능함
- URL, Method, Variable 등 을 받아야함
- Backend가 있는 Application을 만들 때 신경써야 하는 것
- 어떤 요청이 들어왔는지 일일히 확인해야함
- Framework를 사용한다면 Framework가 다 해줌!
- "RequestMapping"
- Framework를 사용한다면 Framework가 다 해줌!
- JSON 형태로 오는 Request 요청 데이터를 객체로 받기 위해 "역직렬화(Deserialize)"가 필요함
- Java가 데이터를 다룰 때 객체로 다루기 때문
- Deserialize: 1차원의 문자열을 2차원의 객체로 바꾸는 작업
- "MessageConverter" = Spring does it all for you!
- 객체인 Response 반환 데이터를 다시 JSON으로 반환하기 위해 "직렬화(Serialize)"가 필요함
- "MessageConverter"
- 이런식으로 일일히 개발해야하한다면 어렵기 때문에 Framework를 사용함
Serialize (직렬화) vs Deserialize (역직렬화)
- Client: 웹 브라우저, 웹 서버
- 3 가지:
- Web Browser
- Method를 사용하지 못함
- Postman
- GUI (Graphical User Interface based) 기반
- cURL
- CUI (Character User Interface) 기반
- allows programs to interact using text-based commands
- Web Browser
- 3 가지:
- Client의 정보 (Request)를 JSON (=String) 형태로 보내줘야함
- 서버가 요청을 받음 (서버는 항상 "객체"를 사용함)
- 사용하는 이유: 객체를 "조작"하기 위해
- DTO: Data Transfer Object
- API가 받아내는 것들 = DTO
- 전송하는 것들 = DTO
- Summary:
- 외부: REST API를 통해 네트워크에 있는 모든 데이터는 JSON(String)으로 전송됨
- 내부: 백엔드 프로그래밍 언어로 개발한 웹 서버에서 모든 데이터는 객체(Object)로 다뤄짐
- 서버가 요청을 받음 (서버는 항상 "객체"를 사용함)
- Deserializatioon = 요청: HTTP Request Body (JSON) -> Java 객체 (2D)로 변환
- Serailization = 응답: Java Object (2D) -> Response Body (JSON)으로 변환
반응형