본문 바로가기
  • GDG on campus Ewha Tech Blog
G-day (정규 세션)

Gdg on Campus Ewha - Part Exchange 세션 3조

by bleu-plateau 2024. 11. 20.

 

1)RESTful API

RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다. 다양한 플랫폼이 생겨나면서 범용적인 사용성을 보장하는 서버 디자인이 필요하게 되었습니다. REST 아키텍처 스타일을 따르는 API를 REST API라고 합니다.

2)REST

Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처고 이를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있습니다. REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일입니다.

3)API

애플리케이션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의합니다.

4)클라이언트

클라이언트는 웹에서 정보에 액세스하려는 사용자입니다.

5)리소스

리소스는 다양한 애플리케이션이 클라이언트에게 제공하는 정보입니다. 클라이언트에 리소스를 제공하는 시스템을 서버라고도 합니다. 조직은 API를 사용하여 리소스를 공유하고 보안, 제어 및 인증을 유지하면서 웹 서비스를 제공합니다. 모든 리소스에 고유한 ID인 HTTP URI 가 존재하고, 이 자원은 Server에 존재합니다.

6)RESTful API의 이점

확장성

REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있습니다. 무상태는 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없기 때문에 서버 로드를 제거합니다. 잘 관리된 캐싱은 일부 클라이언트-서버 상호 작용을 부분적으로 또는 완전히 제거합니다. 이러한 모든 기능은 성능을 저하시키는 통신 병목 현상을 일으키지 않으면서 확장성을 지원합니다.

유연성

RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원합니다. 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리합니다. 서버 애플리케이션의 플랫폼 또는 기술 변경은 클라이언트 애플리케이션에 영향을 주지 않습니다. 애플리케이션 함수를 계층화하는 기능은 유연성을 더욱 향상시킵니다. 예를 들어, 개발자는 애플리케이션 로직을 다시 작성하지 않고도 데이터베이스 계층을 변경할 수 있습니다.

독립성

REST API는 사용되는 기술과 독립적입니다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있습니다. 또한 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있습니다.

 


 

Restful API & RDBMS vs NoSQL

1) RDBMS

DBMS: 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어

그럼 RDBMS에서 R이 의미하는 것은 무엇일까요? 

R은(Relational)의 약자로 RDBMS는 관계형 데이터베이스 관리 시스템을 의미

RDMS는 다시 말해서 아래와와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체입니다. 

 

 

 

이때 특징: 외래키를 사용하여 테이블 간 join을 가능하게 한다.

외래키: 한 테이블의 컬럼이 다른 테이블의 기본키를 참조하는 경우 사용

위의 예시의 경우에서는 회원 table의 기본키인 회원 번호를 주문 table에서 주문 회원 번호로 참조를 하는 경우이다. 

 

2)NoSQL

SQL: 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어로 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안

NoSQL에서의 No는 Not Only의 약자로 위에서 설명한 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미

NoSQL의 목표: 

빅데이터의 등장으로 인해 발생하는 RDBMS의 단점을 보완하여 데이터 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 수평적 확장성인 Scale-Out을 하는 것

RDBMS와 NoSQL의 장단점

RDBMS

장점

  • 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장
  • 데이터를 중복없이 한 번만 저장

단점

  • 테이블간테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음
  • 성능 향상을 위해서는 서버의 성능을 향상 시켜야하는 Scale-up만을 지원하기 때문에 비용이 기하급수적으로 늘어날 수 있음
  • 스키마로 인해 데이터가 유연하지 못하고 스키마가 변경 될 경우에 번거로워짐

NoSQL

장점

  • NoSQL에서는 스키마가 없기 때문에 데이터 구조가 유연하며 자유로워 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있음
  • 데이터 분산이 용이하며 Scale-out 도 가능

단점

  • 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행을 해야 함
  • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정가 어려울 수 있음

이렇게 RDBMS와 NoSQL은 상반되는 특징을 갖고 있기에 RDBMS는 데이터 구조가 명확하고 명확한 스키마가 중요한 경우 사용하는 것이 좋고 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하고,

NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋습니다.

 

댓글