단 한 번에 필요한 정보만 불러오는 효율적은 API 구축하기

 

사메르 부나 지음

김완섭 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

2022년 2월

2022 나는 리뷰어다 활동의 첫 번째 리뷰.

(작년에 이어 올해도 "나는 리뷰어다" 활동 지원 감사드립니다!! 자~ 드가자~~~~!)

 

2022년 한빛미디어 나는 리뷰어다 활동의 첫 번째 책은 "그래프QL 인 액션"이다.

 

먼저 GraphQL이 무엇인지 알아보자.

facebook에서 만든 Graph Query Language로 어플리케이션 레이어 쿼리 언어이다.

다시 말하자면?

API를 위한 쿼리 언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임이다.

(무슨 말인지 잘 모르겠다.)

 

SQL과 비교하면서 좀 더 쉽게 풀어 설명해보자.

 

GraphQL(이하 GQL) 은 API를 만들 때 사용할 수 있는 쿼리 언어. 그와 동시에 쿼리에 대한 데이터를 받을 수 있는 런타임이다.

GQL은 선언현 데이터 fetching 언어라고 흔히 일컬어지며, 개발자는 무슨 데이터가 필요한지에 대한 요구사항만 작성하면 되고 어떻게 가져올지는 신경 쓰지 않아도 된다.

 

SQLDBMS에 저장된 데이터를 효율적으로 가져오는 것이 목적이고,

GQL웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적이다.

 

SQL의 문장은 주로 백엔드 시스템에서 작성하고 호출하는 반면,

GQL의 문장은 주로 클라이언트 시스템에서 작성하고 호출한다.

 

서버사이드 GQL 애플리케이션은 GQL로 작성된 쿼리를 입력받아 쿼리를 처리한 결과를 다시 클라이언트로 돌려준다.

HTTP API 자체가 특정 데이터베이스나 플랫폼에 종속적이지 않은 것처럼 마찬가지로 GQL 역시 어떠한 특정 데이터베이스나 플랫폼에 종속적이지 않다.

일반적으로 GQL의 인터페이스 간 송수신은 네트워크 레이어 L7의 HTTP POST 메서드와 웹소켓 프로토콜을 활용한다.

 

아래 GQL 파이프 라인도 같이 확인해보자

GraphQL 파이프 라인

비교하는 김에 GraphQL과 REST API에 대해서도 비교해보자.

REST API

- URL, Method 조합으로 다양한 Endpoint가 존재

- REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 달라짐

 

GraphQL

- GQL은 단 하나의 Endpoint가 존재

- GQL API는 GQL 스키마의 타입마다 데이터베이스의 SQL 쿼리가 다름

GraphQL vs REST API

이 정도면 GQL에 대한 이해는 됐을 거라 생각한다.

좀 더 자세히 보고자 한다면?

https://velog.io/@jangwonyoon/1.-GraphQL-%EA%B0%9C%EB%85%90

 

#1. GraphQL 개념 및 개요

Graph QL(이하 gql)은 Structed Query Language(이하 sql)와 마찬가지로 쿼리 언어입니다. 하지만 gql과 sql의 언어적 구조 차이는 매우 큽니다. 또한 gql과 sql이 실전에서 쓰이는 방식의 차이도 매우 큽니다. gq

velog.io

링크를 참고하도록 하자. 저자님 감사합니다. 그대로 옮겨오면서 이해했어요.

 

그럼 이제 이 책의 구성에 대해서 알아보자.

 

이 책은 데이터 API를 사용하는 프런트엔드 개발자와 효율적인 데이터 API를 만들어야 하는 백엔드 개발자를 대상으로 한다.

그리고 기본적인 프로그래밍에 대한 지식과 javaScript에 대한 기초 지식도 필요하다.

 

1부 - 그래프QL 에 대한 다양한 질문을 왜, 무엇을, 어떻게의 관점으로 답한다.

  - 1장 : 그래프QL이 정확히 무엇이며 어떤 문제를 해결할 수 있고, 어떤 문제가 발생할 수 있는지 소개
             또한, 그래프QL의 설계 컨셉과 REST API와의 차이점에 대해 설명

  - 2장 : 그래프QL의 인터랙티브 환경 소개. 그래프QL 요청을 실제 작성하고 테스트

  - 3장 : 그래프QL의 기본 내장 기능에 대해 소개. 직접 데이터 요청과 응답을 구성하고 변경

 

2부 - 실제 웹 애플리케이션에서 동작하는 데이터 API를 만들어본다. 이를 통해 그래프QL 서비스 구축 방법과 그래프QL 언어가 무엇인지 이해할 수 있다.

  - 4장 : UI 기능들을 API 처리와 연계하는 방법을 배우고 이를 이용해서 그래프QL 스키마 설계

  - 5장 : 데이터베이스 전용 Node.js 드라이버와 그래프QL.js를 사용해서 실행 가능한 그래프QL 스키마 생성

  - 6장 : API 쿼리를 구현하기 위해서 데이터베이스 필드를 연동

  - 7장 : 6장에서 만든 쿼리를 바탕으로 그래프QL 쿼리 최적화 방법

  - 8장 : 데이터베이스 개체를 생성, 변경, 삭제하기 위한 API 변경 처리

 

3부 - 그래프QL API를 프론트엔드 웹 애플리케이션에 사용하는 방법을 보여준다.

  - 9장 : 그래프QL 클라이언트 라이브러리에 의존하지 않고 그래프QL API를 사용해서 직접 Ajax 요청을 처리

  - 10장 : 유명한 그래프QL 클라이언트 라이브러리 중 하나인 아폴로 클라이언트(Apollo Client)의 강력한 기능

 

소개부터 시작하여 GitHub 같은 그래프QL API 서비스를 사용한 실용적인 예제도 같이 보여주고 있다.

 

Git Repository와 Docker 파일도 제공하기 때문에 환경 구축을 어렵지 않게 할 수 있다.

 

공부를 하면서 어려운 점이 있다면 Pluralsight 같은 동영상 강좌 플랫폼에서 저자의 강의를 볼 수도 있다.

이외에도 jsComplete.com에 많은 동영상 자료가 있으며,

jscomplete.com/help slack 채널도 제공하고 있으니 많이 방문하면 좋을 것 같다.

 

484 페이지에 달하는 분량이지만, 관심이 있는 사람이라면 쭉쭉 진도가 나갈 것이다.

본인은 자바 스프링 백엔드 개발자라서 javaScript에 취약하기 때문에 빠르게 일고 나가지는 못했다.

하지만 꼭 완독 하고, 실제 프로젝트에도 접목시켜 보리라.

 

올해는 시작과 동시에 이직을 하고, 보다 좋은 환경의 회사에서 일을 하고 있다.

(너무 자유로워서 걱정입니다...)

2022년에는 정말 튼튼한 코드를 만드는 개발자가 되고 싶다.

 

LoveYourself.

MongoDB The Definitive Guide / 실전 예제로 배우는 NoSQL 데이터베이스 기초부터 활용까지

크리스티나 초도로, 섀년 브래드쇼, 오언 브라질 지음

김인범 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

12월

나는 리뷰어다 활동의 11번째 리뷰.

(벌써 11번째 리뷰라니... 시간 정말 빠르다! 한빛미디어 항상 감사합니다. 내년에도 잘 부탁드려요!!)

 

2021년 한빛미디어의 마지막 리뷰 책은 "몽고DB 완벽 가이드" 다.

RDBMS도 아직 능숙하지 않지만 그렇다고 NoSQL 공부를 안 할 수는 없지 않겠는가.

 

12월은 NoSQL 이다.

NoSQL은 무엇인가?

 

행과 테이블을 사용하는 관계형(SQL) 데이터베이스보다 훨씬 다양한 방식으로 빠르게 바뀌는 대량의 비정형 데이터를 처리할 수 있다는 점을 강조하기 위해 "비관계형", "NoSQL DB" 또는 "non-SQL" 이라고도 한다.

1960년대부터 다양한 이름으로 존재해 온 NoSQL 기술은 데이터 환경이 변화하고 개발자들이 클라우드, 모바일, 소셜 미디어와 빅 데이터로부터 생성되는 다양한 대규모 데이터를 처리해야 할 필요가 늘어남에 따라 그 인기가 급증하고 있다.

바이럴 성격의 유명인 트윗에서 전자 의료 기록에 포함된 의학 정보에 이르기까지, 새로운 데이터와 데이터 형식이 놀라운 속도로 만들어지고 있다.

 

빅데이터에 대한 중요성이 부각되기 시작한 시점부터 NoSQL에 대한 관심이 증대되었다.

이해를 돕기 위해 SQL과 NoSQL의 차이에 대해 잘 정리해놓은 표를 한번 보자.

출처 :&nbsp;https://azure.microsoft.com/ko-kr/overview/nosql-database/

NoSQL 에 대한 이해가 없었던 개발자라면 오늘 차이점을 알고 가도록 하자.(필자 역시...)

 

책을 살펴보도록 하자.

(총 600 페이지에 달하는 얇은 종이다.)

몽고DB 코리아 시니어 컨설팅 엔지니어이신 김동한 님의 추천사를 보면,

이 책은 몽고DB 최신 정보에 발맞추어 3판까지 개정판을 출간하는 유일한 실전 입문서라고 한다.

책에서는 기초뿐 아니라 전반적인 개발 과정에 필요한 다양한 기능을 배울 수 있고, 개발자에게는 데이터베이스에 대한 지식을, 데이터베이스 관리자에게는 도큐먼트 지향 데이터베이스에 대한 개념을, 운영자에게는 고가용성과 분산 환경 경험을 제공한다고 한다.

 

이 책을 통해 독자들은 몽고DB를 사용해 개발 시간을 단축하고 유연한 스키마를 설계함으로써 빠르게 변화하는 비즈니스에 대응하고 새로운 사업의 가능성을 확인할 수 있다고 한다.

 

사실 추천사가 크게 와닿지는 않지만 개발자가 NoSQL을 공부해야 한다는 사실만은 확실하다. 아직까지 국내 IT 시장은 Java&Spring을 이용한 웹 개발 시장이 가장 크고, 보통은 RDBMS를 사용하고 있다. 하지만 신생 스타트업이나 새로운 프로젝트들은 조금씩 MongoDB를 채택해 나가고 있는 상황이다. 아직 NoSQL 엔지니어들이 많지 않은 상황에서 MongoDB에 대한 이해력을 가진다면 본인의 가치를 높일 수 있는 것은 확실하다.

 

다음으로 이 책의 구성에 대해서 살펴보도록 하자.

 

몽고DB 시작

1장 - 몽고DB가 만들어진 배경과 지향점, 몽고DB를 선택해야 하는 이유

2장 - 몽고DB의 핵심 개념과 용어 설명, 데이터베이스와 셸을 실행하는 방법

3장 - 기본적인 쓰기 연산 방법. 안전성과 속도에 따른 방법

4장 - 도큐먼트를 검색하는 방법과 복작한 쿼리를 생성하는 방법

 

몽고DB 개발

5장 - 인덱스의 개념과 몽고DB 컬렉션에서 인덱스를 사용하는 방법

6장 - 여러 유형의 인덱스와 컬렉션을 사용하는 방법 설명

7장 - 카운트, 고유한 값 찾기, 도큐먼트 그룹화하기, 집계 프레임워크, 그리고 이러한 결과를 컬렉션에 쓰기 등 데이터 집계를 위한 기술

8장 - 트랜잭션

9장 - 몽고DB와 잘 연동되는 애플리케이션을 작성하는 팁

 

복제

10장 - 복제 셋을 구축하고 활용 가능한 설정 옵션을 다루는 방법

11장 - 복제와 관련된 다양한 개념

12장 - 복제가 어떻게 애플리케이션과 상호작용 하는지

13장 - 관리자 측면에서 복제 셋을 운영하는 방법

 

샤딩

14장 - 샤딩에 관한 간단한 설정

15장 - 클러스터 구성 요소의 전반적인 면을 살펴보고 어떻게 설정하는지

16장 - 다양한 애플리케이션에서 샤드 키를 고르는 방법

17장 - 샤드 클러스터를 운영하는 방식

 

애플리케이션 관리

18장 - 몽고DB가 어떤 작업을 하는 중인지 살펴보는 방법

19장 - 몽고DB의 보안과 더불어 배포를 위한 인증 및 권한을 구성하는 방법

20장 - 몽고DB가 어떻게 데이터를 견고하게 저장하는지 설명

 

서버 관리

21장 - 몽고DB를 구동하고 멈출 때의 일반적인 옵션

22장 - 각 유형별 배포에 대해 백업하고 복구하는 방법

23장 - 각 유형별 배포에 대해 백업하고 복구하는 방법

24장 - 몽고DB를 배포할 때 유의해야 하는 여러 시스템 설정

 

부록 A - 몽고DB 버전 부여 방식과 각 OS에서 몽고DB를 설치하는 방법

부록 B - 몽고DB의 내부 작동 방식과 관련된 스토리지 엔진, 데이터 포맷, 와이어 프로토콜

 

내용이 굉장히 방대하다. 정말 이 책 한권만 통달하면 몽고DB를 실무에서 다루는 데는 문제가 없을 것 같다.

본문의 일부를 살펴보자.

쿼리 조건

RDBMS를 사용하던 분들도 SQL과 비교하면서 보면 이해가 더 잘 될 것 같다.

예약어를 사용하여 쿼리문을 뽑아내는 과정이 재미있다. 예약어를 한 번만 더 생각해 보면 어느 정도 뜻을 유추해 낼 수 있다.

처음에는 익숙하지 않더라고 연반추 학습법으로 보고 또 보자.

 

아직 뒷부분은 보지 못했지만, 빅데이터를 다루고자 하는 직군이라면 필수적으로 학습해야 하는 책임은 분명하다.

 

개발자의 공부는 끝이 없지만, NoSQL을 다뤄야 하는 시기가 온다면 꼭 "몽고DB 완벽 가이드" 를 통해 능력 있는 엔지니어가 되도록 하자.

 

우리 개발자 모두들

메리 크리스마스 & 해피 뉴 티어!!

Fundamentals of Software Architecture / 엔지니어링 접근 방식으로 배우는 소프트웨어 아키텍처 기초

 

마크 리처즈, 닐 포드 지음 / 이일웅 옮김

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

11월

나는 리뷰어다 활동의 10번째 리뷰.

(벌써 10번째 리뷰라니!!! 한빛미디어 항상 감사합니다. 내년에도 잘 부탁드려요!!)

 

2021년 한빛미디어의 리뷰어로 활동하면서 책 제목으로만 봤을 때 가장 어려워 보이는 책이다.

아키텍처라는 단어만 들어도 흐음... 하게 되니 말이다.

 

하지만 우리 개발자분들 너무 겁먹지 말자. 우리 주니어를 위한 소프트웨어 아키텍처 기초다. 기초!

 

소프트웨어 아키텍트는 전문가로 간주되는 소프트웨어 개발자로서, 고수준의 설계를 결정하고 소프트웨어 코딩 표준, 도구, 플랫폼 등의 기술 표준을 지시한다. - 위키백과

 

당장 옮긴이의 말부터 어렵다. 고수준이라니. 하지만 한번 더 힘을 내보자.

 

'아키텍트에게는 기술의 깊이보다 폭이 더 중요하다'

'아키텍트는 기업의 정치 기류를 이해하고 처세를 잘해야 한다'

 

이 두 문장에서 무언가가 느껴진다면, 꼭 완독하겠다는 마음으로 책을 구매하자.

(한빛미디어 감사합니다. 저는 작은 희망을 보았습니다.)

 

공리 axiom

- 이미 정립되고 받아들여졌거나 그 자체로 자명한 명제 또는 정리

 

소프트웨어 아키텍트는 공리를 토대로 이론을 만들지만 수학보다 더 소프트하기 때문에 이론의 기반이 되는 기초 자체가 계속 빠른 속도로 변한다. 소프트웨어 개발 생태계는 일정한 동적 평형 상태로 존재한다. 즉, 어느 시점에서는 균형이 잡힌 상태이지만 장기적으로는 동적인 움직임을 나타낸다. 요즘 대세인 컨테이너화와 그로 인한 변화를 그 예로 들 수 있는데, 10년 전에는 없던 도구가 글로벌 소프트웨어 콘퍼런스도 열릴 정도로 성장했다.

 

하나의 작은 변화가 또 다른 작은 변화를 일으키고, 그런 일이 수백 회 반복되면 또 다른 생태계가 새로 탄생한다.

 

그래서...(아직 저자가 무슨 이야기를 하고 싶은지 모르겠다)

 

아키텍트는 이전 시대에서 물려받은 가정과 공리에 의문을 제기할 중요한 책임이 있다.

 

새로운 시대에는 그에 걸맞는 새로운 프랙티스, 도구, 측정, 패턴 등 많은 변화가 필요하다.

그리하여, 이 책은 지난 10년 동안 일어난 모든 혁신과 더불어 오늘날의 새로운 구조와 관점에 부합하는 새로운 지표를 바탕으로 소프트웨어 아키텍처를 현대적인 관점에서 살펴보려고 한다.

 

이 책은 이미 잘 알려진 패턴을 다루지만 산지식, 도구, 엔지니어링 프랙티스, 그 밖의 다른 입력에 기반한 새로운 접근 방식으로 바라본다.

그래서 기존 소프트웨어 아키텍처에서 당연시됐던 많은 공리들을 최근 생태계와 설계 아키텍처의 관점에서, 그리고 요즘의 전반적인 추세와 비교하여 다시 한번 돌아보는 책이다.

 

챕터를 보자

CHAPTER 1 서론

[PART I 기초]
CHAPTER 2 아키텍처 사고
CHAPTER 3 모듈성
CHAPTER 4 아키텍처 특성 정의
CHAPTER 5 아키텍처 특성 식별
CHAPTER 6 아키텍처 특성의 측정 및 거버넌스
CHAPTER 7 아키텍처 특성 범위
CHAPTER 8 컴포넌트 기반 사고


[PART II 아키텍처 스타일]
CHAPTER 9 기초
CHAPTER 10 레이어드 아키텍처 스타일
CHAPTER 11 파이프라인 아키텍처 스타일
CHAPTER 12 마이크로커널 아키텍처 스타일
CHAPTER 13 서비스 기반 아키텍처 스타일
CHAPTER 14 이벤트 기반 아키텍처 스타일
CHAPTER 15 공간 기반 아키텍처 스타일
CHAPTER 16 오케스트레이션 기반 서비스 지향 아키텍처 스타일
CHAPTER 17 마이크로서비스 아키텍처 스타일
CHAPTER 18 최적의 아키텍처 스타일 선정


[PART III 테크닉과 소프트 스킬]
CHAPTER 19 아키텍처 결정
CHAPTER 20 아키텍처 리스크 분석
CHAPTER 21 아키텍처 도식화 및 프레젠테이션
CHAPTER 22 개발팀을 효율적으로
CHAPTER 23 협상과 리더십 스킬
CHAPTER 24 커리어패스 개발
Appendix A 자율 평가 문제

 

굉장하다. 챕터만 봐도 숨이 막힌다. 아무래도 아키텍처는 내 길이 아닌가 싶기도 하지만,

깊은 지식 없이 얄팍하게 두루두루 알고 있는 본인을 보자면 또 이 쪽은 어떨까 싶은 생각이 든다.

 

아직 책을 다 보진 않았지만, 책 자체는 정말 굉장히 좋은 책이라고 생각한다. 전혀 생소한 분야 같지만 생각보다 접근성이 좋았고,

기초적인 내용들로 시작하면서 어렵지 않게 느끼게 해 주었다.

 

또한 기초를 보고 있는 나 자신이 많이 부족하다고 느낀다면 그건 당연한 것이라 생각한다.

어찌 보면 제너럴 한 개발자의 길보다는 험난함이 예상되지만 그만큼 돌아오는 베너핏이 다르리라.

 

가는 길이 힘들 땐 선배들의 명언이 힘을 줄 것이다.

막연하게나마 아키텍처에 대한 관심이 있는 자들이여. 꼭 이 책으로 시작해보라.

본인도 꼭 완독 할 테니!!

 

 

+ Recent posts