데이터베이스와 API

zansol·2020년 3월 22일
2
post-thumbnail

📝 데이터베이스

데이터는 '정보'로서의 데이터를 말한다.
1. 통합된 데이터 : 자료의 중복을 배제한 데이터의 모임
2. 저장된 데이터 : 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
3. 운영 데이터 : 조직의 고유한 업무를 수행하는데 존재가치가 확실하고 없어서는 안될 반드시 필요한 자료
4. 공용 데이터 : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
아주 쉽게 말하면, 엑셀에 정리한 자료도, 핸드폰의 연락처도 데이터베이스가 될 수 있다.

데이터베이스의 CRUD와 REST API 엔드포인트가 짝지어진 것은 흔히 볼 수 있는 형태이다.
하지만 REST API는 어떤 리소스의 특정 시점의 상태를 반영하고 있는 정보이므로 리소스와 데이터베이스의 개념을 분리해야한다.

🗝 API

응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

예를들어, 맛집찾기 서비스를 만든다고할때 운영체제나 프로그래밍 언어가 제공하는 기능은 '지도정보(지도API)', 응용프로그램은 '지도정보를 통해 만든 서비스'라고 생각하면 된다.

만약 API가 없다면,
응용프로그램에서 지도 정보를 직접 만들어 사용하고, 정보가 바뀔때마다 업데이트 해줘야한다.

그렇다면 API는 어떻게 구축되어야 할까?
데이터베이스 개념을 중심으로, DB스키마에 맞춰 API를 만든다면 시간이 지남에 따라 API가 애매하고 유지하기가 어려울 가능성이 높아진다. 왜냐하면, API는 다양한 컨텍스트를 지원해야하고, 이에 따라 결과는 다양하게 변형될 수 있기 때문이다.

한 리소스에 대해 요청된 명령들은 각기 다른 값을 전달받기를 원한다.
그렇기때문에 각기 다른 값을 전달할 API가 만들어져야한다.
만약 너무 많은 엔드포인트가 필요로 되거나, 컨텍스트를 확인하기 어렵다면 GraphQL과 같은 기술을 사용하여 API에게 요청하고 정보를 얻어갈 권한을 유저에게 주는 것도 좋은 방법이다.

클라이언트는 필요한 데이터의 구조를 지정할 수 있으며, 서버는 정확히 동일한 구조로 데이터를 반환한다. GraphQL은 사용자가 어떤 데이터가 필요한 지 명시할 수 있게 해준다.
이러한 구조를 통해 불필요한 데이터를 받게 되거나 필요한 데이터를 받지 못하는 문제를 피할 수 있다.

profile
Front-end Web Developer

0개의 댓글