본문 바로가기
Java/자바공부

부트캠프가 끝난뒤...(5)

by 티코딩 2023. 5. 11.

ㅇ HTTP

웹 애플리케이션 아키텍처에선 클라이언트와 서버가 HTTP라는 프로토콜을 이용해 대화를 나눈다.

정보처리기사를 준비하면서 외웠던 OSI 7계층에는 응용계층, 표현계층, 세션계층, 전송계층, 네트워크 계층, 데이터링크, 물리계층이 존재하는데, 응용계층에 존재하는게 HTTP, HTTPS, FTP, WebSocket 등등이 있고, 전송계층에는 TCP, UDP 등 인터넷 프로토콜이 있다. 

 

ㅇ API

손님이 메뉴를 준비할 때, '알아서 해와'라는 요청은 컴퓨터에선 있을 수 없다. 컴퓨터에겐 정확한 주문 방법에 따라 요청해야한다. 하지만 주문을 하기 위해선 사용가능한 자원을 파악해야하는데, 이를 위해 API가 존재한다. API(Application Programming Interface)라는 뜻은 의사소통이 가능하도록 만들어진 접점이라는 뜻이다. 고로 서버는 API를 잘 구축해놔야 클라이언트가 이를 이용할 수 있다. 데이터를 요청할땐 HTTP프로토콜을 보통 사용하며, 주소(URL,URI)를 통해 접근 가능하다. 그리고 요청시 메서드를 지정해, 리소스와 관련된 행동을 지정 가능하다.

아래는 내가 프로젝트를 만들기 전에 만든 API명세서다.

이런식으로 api명세서를 미리만들고 개발에 들어가면, 프론트에서도 이 명세서를 보고 프로그래밍 하기 좋다.

 

ㅇ REST API

Representational State Transfer 의 약자로, 웹의 장점을 최대한 활용할 수 있는 아키텍처. 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식이다. 

좋은 REST API를 작성할때 4가지 단계가 있다.

0단계 - 단순히 HTTP 프로토콜을 사용하기만 해도 된다.

1단계 - REST API는 웹에서 사용되는 모든 데이터나 자원을 HTTP URI로 표현하는데, 모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야한다. 그리고 받은 자원에 대한 정보를 응답으로 전달해야 한다. 엔드포인트 작성시에는 명사로 작성하는게 바람직함. 그리고 응답으로 리소스 사용에 대한 성공/실패 여부를 같이 반환해야 한다. 

2단계 - CRUD에 맞게 적절한 HTTP 메서드를 사용해야 한다. 응답코드 도 정확하게 사용해야 한다.(200~, 500~, 400~)

3단계 - HATEOAS(Hypertext As The Engine Of Application State)라는 하이퍼미디어 컨트롤을 적용한다. 응답에는 리소스의 URI를 포함한 링크요소를 삽입한다. 

 

ㅇ SQL

Structured Query Language는 데이터베이스용 프로그래밍 언어. 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다. SQL관련 포스팅은 따로 mySQL 공부할때 포스팅하겠다.

 

ㅇ ACID

먼저, 트랜잭션이 뭘까? 데이터베이스의 상태를 변환시키는 기능을 수행하기 위해 행해지는 하나 이상의 쿼리를 모아놓은 하나의 작업단위.

트랜잭션이란, 데이터베이스 트랜잭션이 발생할 때, 그 안정성을 보장할 수 있는 성질이다.

Atomicity, Consistency, Isolation, Durability의 약자다.

Atomicity - 하나의 트랜잭션 내에선 모든 연산이 성공하거나 모두 실패해야 함.

Consistency - 하나의 트랜잭션 전후에 데이터베이스의 일관된 상태가 유지되어야 함.

Isolation - 각각의 트랜잭션은 독립적이고, 서로의 연산에 영향을 줄 수 없다.

Durability - 하나의 성공된 트랜잭션에 대한 로그가 기록되고 영구적으로 남는다.

 

ㅇ NoSQL

NoSQL 과 관련된 내용은 니꼴라스님의 영상을 정리한 포스팅으로 대체함.

https://thcoding.tistory.com/87

 

개념정리(feat.니꼴라스 성님)

들어가기전에 알고리즘에 니꼴라스 성님께서 SQL에 대해 5분설명해주는 영상이 뜨길래 한번 시청했다. 먼저, 데이터베이스에는 두가지 종류가 있다고 한다. 1) Relational, 2) Non-Relational 혹은 1) SQL, 2

thcoding.tistory.com

 

'Java > 자바공부' 카테고리의 다른 글

부트캠프가 끝난뒤...(6)  (0) 2023.05.16
부트캠프가 끝난뒤...(4)  (0) 2023.05.03
부트캠프가 끝난뒤...(3)  (0) 2023.04.27
부트캠프가 끝난뒤...(2)  (0) 2023.04.26
부트캠프가 끝난뒤...(1)  (0) 2023.04.11