이국범님의 프로필 사진

이국범

FE

[GPT-4] Blitz.js는 어떻게 제로 API 레이어를 구현하였는가

(​이하 ChatGPT(GPT-4)의 대답) Blitz.js는 Next.js기반의 풀스택 프레임워크입니다. API를 수동으로 관리할 필요성을 제거하여 개발자 경험을 단순화하는 것을 목표로 합니다. '제로 API'라는 용어는 프론트엔드와 백엔드에 대해 API를 별도로 빌드하고 유지 관리할 필요성을 추상화한다는 개념을 의미합니다. Blitz.js는 다음과 같은 기술과 개념을 사용하여 제로 API 계층을 달성합니다: 원격 프로시저 호출(RPC): 클라이언트와 서버 간의 통신을 위해 REST 또는 GraphQL을 사용하는 대신 Blitz.js는 RPC를 사용합니다. RPC를 사용하면 클라이언트 측에서 직접 서버 측 함수(Blitz.js에서는 "변이" 및 "쿼리"라고도 함)를 로컬 함수인 것처럼 호출할 수 있습니다. 따라서 API 엔드포인트, 요청 및 응답 처리, 데이터 직렬화 및 역직렬화를 수동으로 작성하고 유지 관리할 필요가 없습니다. RPC(원격 프로시저 호출): Blitz.js의 제로 API 계층의 기본은 기존 REST 또는 GraphQL API 대신 RPC를 사용하는 것입니다. RPC를 사용하면 서버 측 함수(쿼리 및 변이)를 로컬 함수처럼 클라이언트 측에서 직접 호출할 수 있으므로 API 엔드포인트, 요청 및 응답을 정의하고 관리할 필요가 없습니다. 자동 API 생성: Blitz.js는 프로젝트의 파일 구조와 쿼리 및 변이의 명명 규칙에 따라 API 엔드포인트를 자동으로 생성합니다. 쿼리와 변형을 적절한 폴더에 배치하면 개발자가 API 엔드포인트를 수동으로 설정하거나 각 엔드포인트에 대한 요청과 응답을 처리할 필요가 없습니다. 가져오기 재작성을 위한 바벨 플러그인: Blitz.js는 사용자 정의 Babel 플러그인을 사용하여 클라이언트 측 코드에서 가져오기 문을 다시 작성합니다. 개발자가 React 컴포넌트에서 쿼리 또는 변형을 호출하면, Babel 플러그인은 해당 서버 측 함수에 대해 생성된 클라이언트 측 코드를 가져오기 위해 import 문을 다시 작성합니다. 즉, 개발자는 서버 측 함수를 수동으로 임포트하거나 API 요청을 처리하지 않고도 마치 로컬 함수처럼 직접 호출할 수 있습니다. 컴파일 타임 함수 실행: 컴파일 시 Blitz.js는 서버 측 함수(쿼리 및 변이)를 추출하고 해당 함수를 호출하기 위한 클라이언트 측 코드를 생성합니다. 생성된 클라이언트 측 코드는 실제 API 요청을 처리하여 서버로 데이터를 전송하고 응답을 수신합니다. 이 프로세스는 개발자에게 투명하게 공개되므로 함수가 로컬에서 실행되는 듯한 착각을 불러일으키고 제로 API 환경을 조성하는 데 기여합니다. 클라이언트 측 데이터 처리: Blitz.js는 클라이언트 측에서 데이터 불러오기, 캐싱, 동기화를 위해 React Query를 사용합니다. React Query는 데이터 불러오기 프로세스를 추상화하고 데이터가 로컬에서 관리되는 것처럼 보이게 함으로써 원격 데이터 작업을 간소화하고 제로 API 계층에 기여합니다. config에 대한 규칙: Blitz.js는 필요한 상용구와 config의 양을 최소화하기 위해 구성에 대한 규칙 접근 방식을 따릅니다. 변경 및 쿼리에 대한 특정 파일 구조와 명명 규칙을 채택하여 광범위한 구성 파일 없이도 애플리케이션의 흐름을 쉽게 이해할 수 있습니다. 코드 생성: Blitz.js에는 규칙에 따라 파일과 폴더를 자동으로 생성하는 코드 생성기가 포함되어 있습니다. 따라서 파일을 수동으로 생성할 필요가 없으므로 신속한 개발이 가능합니다. Prisma: Blitz.js는 데이터베이스 액세스 및 관리를 간소화하기 위해 최신 ORM(객체 관계형 매퍼)인 Prisma를 사용합니다. Prisma는 데이터베이스 쿼리 및 변형을 위한 추상화 계층을 제공하므로 복잡한 SQL 문을 작성하지 않고도 데이터베이스로 쉽게 작업할 수 있습니다. 이러한 기술과 개념을 사용하여 Blitz.js는 제로 API 계층을 구현하므로 개발자는 복잡한 API 관리에 대한 걱정 없이 애플리케이션 로직 작성에 집중할 수 있습니다.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 3월 17일 오후 11:58

댓글 5

  • 추가질문 : 그러면 REST API를 작성할 필요가 없나요? 답변 : 맞습니다! Blitz.js를 사용하면 기존 REST API를 작성할 필요가 없습니다. 대신 쿼리(데이터 가져오기용) 및 변이(데이터 업데이트용)라는 서버 측 함수를 만들면 됩니다. 이러한 함수는 앱/쿼리 및 앱/변형과 같은 프로젝트 내의 특정 폴더에 위치합니다. Blitz.js는 이러한 쿼리 및 변이의 파일 구조와 명명 규칙을 기반으로 API 엔드포인트를 자동으로 생성합니다. RPC(원격 프로시저 호출)를 사용하면 클라이언트 측 코드에서 이러한 서버 측 함수를 로컬 함수인 것처럼 직접 호출할 수 있습니다. 이 접근 방식은 개발 프로세스를 간소화하고 별도의 REST API 엔드포인트, 요청 및 응답을 정의, 관리 및 유지 관리할 필요가 없습니다. 또한 클라이언트와 서버 간의 통신을 간소화하여 원활하고 효율적인 개발 환경을 제공합니다. 따라서 Blitz.js를 사용하면 기존 REST API 개발의 복잡성에 대해 걱정할 필요 없이 애플리케이션 로직과 사용자 인터페이스 구축에만 집중할 수 있습니다.

  • 추가질문 : 그렇다면 blitz.js를 사용할 때 API 개발자가 필요 없는가? 답변 : 일반적으로 맞습니다. Blitz.js를 사용하면 프레임워크가 API 관리의 복잡성을 추상화하여 API 구축 프로세스를 간소화하므로 전담 API 개발자가 필요하지 않을 수 있습니다. Blitz.js를 사용할 때 전담 API 개발자가 필요하지 않을 수도 있지만, 개발팀은 프레임워크의 규칙을 이해하고 구성 요소와 아키텍처에 익숙해야 합니다. 또한 개발팀은 풀스택 자바스크립트 개발, 특히 Blitz.js에 사용되는 핵심 기술인 React와 Node.js에 대한 경험이 있어야 합니다. 요약하면, Blitz.js를 사용하면 JavaScript, React, Node.js 및 Blitz.js 프레임워크 자체를 잘 이해하고 있는 단일 개발 팀으로 풀스택 애플리케이션을 구축할 수 있습니다. 따라서 잠재적으로 팀에 전담 API 개발자가 필요하지 않을 수 있습니다.

  • 추가질문 : 이것은 피닉스 라이브뷰와 같은 개념인가? 답변 : Blitz.js와 Phoenix LiveView는 개발자 경험을 간소화하고 수동 API 관리의 필요성을 줄인다는 측면에서 몇 가지 유사점을 공유하지만, 서로 다른 기술을 기반으로 구축되고 서로 다른 개념을 사용합니다. Blitz.js는 React와 Node.js를 기반으로 구축된 풀스택 자바스크립트 프레임워크입니다. 이 프레임워크는 원격 프로시저 호출(RPC)과 함께 제로 API 개념을 사용하여 마치 로컬 함수인 것처럼 클라이언트 측 코드에서 직접 서버 측 함수(쿼리 및 변이)를 호출합니다. 따라서 API 엔드포인트, 요청, 응답을 별도로 관리할 필요가 없습니다. Blitz.js는 주로 자바스크립트 생태계를 대상으로 하며, 프런트엔드 라이브러리로 React를 사용하고 서버 측 렌더링 및 서버 측 로직에 Node.js를 사용합니다. 반면에 피닉스 라이브뷰는 엘릭서 프로그래밍 언어를 사용하여 구축된 피닉스 프레임워크의 기능으로, 에를랑 가상 머신(BEAM)에서 실행됩니다. 라이브뷰를 사용하면 JavaScript를 작성할 필요 없이 서버에서 렌더링된 HTML로 실시간 대화형 웹 애플리케이션을 구현할 수 있습니다. 웹소켓을 사용하여 클라이언트와 서버 간의 연결을 지속적으로 유지하므로 서버가 클라이언트에 직접 업데이트를 푸시할 수 있습니다. 라이브뷰를 사용하면 대부분의 애플리케이션 로직과 상태 관리가 서버 측에서 이루어지므로 별도의 API 엔드포인트를 작성하지 않고도 인터랙티브 애플리케이션을 구축할 수 있습니다. 요약하자면, Blitz.js와 Phoenix LiveView는 모두 개발 프로세스를 간소화하고 수동 API 관리의 필요성을 줄이는 것을 목표로 합니다. 하지만 서로 다른 기술을 기반으로 하며 서로 다른 접근 방식을 사용합니다. Blitz.js는 풀스택 자바스크립트 프레임워크인 반면, Phoenix LiveView는 실시간 서버 렌더링 웹 애플리케이션에 중점을 둔 Elixir 기반 Phoenix 프레임워크의 일부입니다.

  • 추가 질문 : 너의 답변에 의하면 앞으로 API 개발자가 사라질 수도 있는가? 답변 : API 개발자가 미래에 완전히 사라질 가능성은 낮지만, 기술 및 개발 관행이 발전함에 따라 그 역할이 변화할 수 있습니다. Blitz.js나 Phoenix LiveView와 같은 프레임워크는 API 관리가 간소화되고 추상화되고 있음을 보여주는 예이지만 모든 사용 사례나 조직에 적합하지는 않을 수 있습니다. API는 서로 다른 애플리케이션, 서비스 및 시스템이 서로 통신할 수 있게 해주기 때문에 최신 소프트웨어 개발에서 계속해서 중요한 역할을 할 것입니다. 마이크로 서비스 아키텍처, 분산 시스템 및 클라우드 컴퓨팅의 채택이 증가함에 따라 API 개발 및 관리의 중요성은 계속 높아질 것입니다. 그러나 API 개발자의 역할은 다음과 같은 측면에 더욱 중점을 두면서 변화할 수 있습니다: API 설계: 개발 도구와 프레임워크가 구현 세부 사항을 추상화함에 따라 API 개발자는 API를 사용하는 개발자에게 일관되고 사용자 친화적인 경험을 제공하는 API를 설계하고 모델링하는 데 초점을 맞출 수 있습니다. API 거버넌스: 조직이 계속해서 더 많은 API를 개발하고 관리함에 따라 API 표준 정의 및 시행, 보안 보장, 성능 모니터링, 문서 유지 관리 등을 포함하는 API 거버넌스에 대한 필요성이 점점 더 커질 것입니다. 통합: API 개발자는 점점 더 내부 및 외부의 다양한 시스템, 애플리케이션, 서비스를 통합하는 데 집중할 수 있습니다. 여기에는 타사 공급업체에서 제공하는 API를 사용하거나 분산 시스템의 여러 부분을 연결하는 작업이 포함될 수 있습니다. 전문 API: 일부 API에는 특정 업계 표준, 프로토콜 또는 기술과 같은 전문 지식이 필요합니다. 이러한 전문 API를 설계하고 구현하려면 해당 분야에 대한 전문 지식을 갖춘 API 개발자가 여전히 필요합니다. 결론적으로 API 개발자의 역할은 진화할 수 있지만 완전히 사라지지는 않을 것입니다. 소프트웨어 개발 관행과 기술이 계속 발전함에 따라 API 개발자는 개발 도구와 프레임워크에 의해 자동화되거나 추상화될 가능성이 적은 API 개발 측면에 적응하고 집중해야 할 것입니다.

  • 추가 질문 : 네가 말한 "자동화되거나 추상화될 가능성이 적은 API 개발"이 무엇인가? 예를 들어달라 답변 : API 개발의 특정 측면은 복잡성, 전문 지식의 필요성 또는 특정 사용 사례에 필요한 사용자 지정으로 인해 개발 도구 및 프레임워크로 자동화되거나 추상화될 가능성이 적습니다. 다음은 몇 가지 예입니다: 사용자 지정 인증 및 권한 부여: 많은 프레임워크가 기본 제공 인증 및 권한 부여 메커니즘을 제공하지만, 특정 애플리케이션에는 싱글 사인온(SSO) 구현 또는 조직의 기존 ID 공급자와의 통합 등 특정 요구사항에 맞는 맞춤형 솔루션이 필요할 수 있습니다. 산업별 API: 의료나 금융과 같은 특정 산업을 위해 설계된 API는 종종 산업별 규정, 표준 및 프로토콜을 준수해야 합니다. 이러한 분야에 대한 도메인 지식을 갖춘 API 개발자는 이러한 고유한 요구 사항을 준수하는 API를 설계하고 구현해야 합니다. 레거시 시스템 통합: 많은 조직이 여전히 레거시 시스템에 의존하고 있으며, 이러한 시스템을 최신 API와 통합하는 것은 어려울 수 있습니다. 기존 시스템과 새로운 시스템 간의 가교를 구축하고 유지 관리하려면 레거시 기술 및 프로토콜에 대한 전문 지식을 갖춘 API 개발자가 필요합니다. 고성능 및 실시간 API: 높은 부하, 짧은 지연 시간 또는 실시간 데이터 처리를 처리할 수 있는 API를 구축하려면 성능 최적화, 분산 시스템 및 데이터 처리 기술에 대한 전문 지식이 필요합니다. 이러한 API에는 개발 도구와 프레임워크로 쉽게 추상화할 수 없는 맞춤형 솔루션이 필요한 경우가 많습니다. 고급 보안: 특히 민감한 데이터나 중요한 작업을 처리하는 API의 보안을 보장하려면 암호화, 디지털 서명 또는 위협 탐지와 같은 고급 보안 조치를 구현해야 할 수 있습니다. 안전한 API를 설계하고 구현하기 위해서는 보안에 대한 전문 지식을 갖춘 API 개발자가 계속 필요할 것입니다. 복잡한 데이터 변환: 일부 API는 클라이언트에 노출되기 전에 복잡한 데이터 변환, 집계 또는 처리가 필요합니다. 이러한 API를 개발하려면 기본 데이터 모델, 비즈니스 로직 및 처리 요구 사항을 이해해야 하며, 이러한 요구 사항은 쉽게 자동화하거나 추상화할 수 없습니다. 요약하면, 개발 도구와 프레임워크가 API 개발의 많은 측면을 계속 단순화하고 추상화하고 있지만 특정 영역에서는 여전히 전문 지식, 사용자 지정 또는 특정 사용 사례에 대한 깊은 이해가 필요합니다. 이러한 측면에 집중하는 API 개발자는 강력하고 안정적인 API를 구축하고 유지 관리하는 데 있어 전문 지식이 여전히 필수적이므로 계속 수요가 있을 것입니다.