# Relay

20개의 포스트

GraphQL) Relay는 어떤 문제를 해결해줄까?

Relay란 Relay는 Meta(facebook)에서 개발한 React용 GraphQL 데이터 관리 라이브러리이다. meta에서 개발한 만큼 React와 궁합이 좋고, 개발자 친화적이다. 러닝커브는 다소 높지만 그만큼 높은 사용성을 제공한다고 알려져있다. 이 글에서는 Relay의 세부적인 환경설정이나 사용법에 집중하기 보다는, 기존 client side data fetch에 어떤 문제가 있었는지, 그리고 Relay는 그 문제를 어떻게 해결했는지를 중점으로 알아보겠다. Data Fetching Issue react에서 relay를 사용하지 않고 데이터를 요청하는 과정을 생각해보자. 일반적으로 useEffect를 이용해 data를 state에 할당하는 방식으로 렌더링을 진행할 것이다. 얼핏 자연스러워 보이는 이 코드에는 크게 두 가지 문제점이 있다. Life Cycle 우리가 data 요청에 사용하는 useEffect는 fun

2023년 8월 12일
·
2개의 댓글
·

Building HW for Bits

Building HW for Bits Bit를 위한 H/W는 일종의 전기를 이용한 Switch Relay Electromagnet을 이용한 일종의 switch Relay에 의해 전기가 가해지면 electromagnet에 의해 switch가 켜지고, 전기가 끊기면 내부의 스프링에 의해 다시 꺼지는 동작 일반적으로 전자석 제어용 전압/전류는 낮음. 이를 이용하여 더 높은 전압/전류를 제어하는데 사용 일반적인 switch와 달리 고전압, 고전류를 제어하는 switch로 활용됨. 단점으로는 Back EMF(Back ElectroMotive Force)에 취약. Relay's Schematic Diagram SPST : Single Pole Single Thro

2023년 4월 1일
·
0개의 댓글
·
post-thumbnail

쉽게 배우는 Relay - 1. Relay 소개

안녕하세요! 이번에는 짧게 끝내는 글이 아닌 시리즈로 연재하는 튜토리얼을 만들어 보려고 하는데요, Relay의 공식 문서가 너무 어렵고 복잡하다는 수많은 울부짖음을 듣고(...) 한번 한국어로 쉽게 따라갈 수 있는 튜토리얼을 써 봐야겠다고 결심하게 되었습니다. Relay의 보급은 대의를 위해 매우 중요한 이슈이니까요. (?) 그럼 한 번 시작해 볼까요? Relay란? Relay는 Meta(구 Facebook)에서 개발 중인 GraphQL 클라이언트로, Meta에서 개발하는 각종 프론트엔드에서 가장 활발히 사용되고, 가장 권장되는 GraphQL 클라이언트입니다. 실제로 현재 Facebook 웹 버전은 Relay를 매우 적극적으로 사용하고 있으며, 이는 높은 복잡도를 가진 아주 큰 규모의 웹앱에서도 사용하기 매우 적합한 클라이언트라는 점을 엿볼 수 있게 해 줍니다. Meta에서 개발한 물건답게 React와도 매우 좋은 궁합을 자랑하며, React의 각종 실험 기능들을 선제적으

2022년 9월 7일
·
1개의 댓글
·

Relay

공식문서와 번역기를 참고했습니다. :) Relay는 너와 함께 확장되는 GraphQL 클라이언트이다. 규모에 맞게 제작 Relay는 어떠한 규모에도 높은 성능을 위해서 제작되었다. 여러분의 App의 component가 수십 개, 수백 개, 수천 개라도 상관없이, Relay는 data-fetching을 쉽게 관리해줍니다. 그리고 Relay의 컴파일러 덕분에 여러분의 App이 커지더라도 빠른 속도를 유지시켜줍니다. 빠르게 반복을 유지시킵니다. Relay는 선언적으로 data-fetching이 됩니다. 어떻게 data를 fetching할 걱정 없이 Comoponent가 데이터 의존성을 선언합니다. Relay는 각 component가 필요로 하는 데이터를 가져오고 사용헐 수 있도록 보장합니다. 이렇게하면 component들이 분리되지 않고 재사용하기 수월해집니다. Relay를 사용하면, compon

2022년 8월 23일
·
0개의 댓글
·
post-thumbnail

GraphQL Relay 가이드 따라가기

팀 프로젝트에서 Relay를 사용한다. Relay는 Apollo에 비해서 자료가 너무 부족하다... 정말 없다 자료가.... 우선 Relay 공식 홈페이지를 참고했다. 1. CRA 만들기 2. GraphQL 데이터를 fetch하기(Relay 없이) 깃허브의 GraphQL 서버를 이용할것이다. 2.1 깃허브 GraphQL Authentication 깃허브 API를 사용하기 위한 토큰이 필요하다. 이곳에 들어가서 토큰을 발급 받자 .env파일을 만들어 토큰값을 설정하면 된다. 2.2: fetchGraphQL 함수 만들기 fetchGraphQL.js를 만들어서 안에 이런식으로 코드를 작성한뒤 2.3: 실행시키기 App.js로 가서 이런식으로 실행시킨다. !

2022년 8월 20일
·
0개의 댓글
·

RxSwift 시작하기(Relay) - 5

오늘 알아볼 내용은 Relay입니다. 시작하기에 앞서 사전적 용어부터 볼게요. > 전달하다, 중계하다 뭔가를 전달하는 역할인 것은 유추 가능하네요. 주로 UI Event들을 관찰합니다. 그러기에 UI Event에 관련된 액션들을 넣을 수가 있고요. Relay라는 녀석은 RxSwift에서 제공하는 것이 아닌, RxCocoa에서 제공합니다. RxCocoa는 애플 환경의 애플리케이션을 만들 때 사용하는 Cocoa Framework와 Rx를 합친 기능을 제공합니다. Relay는 UI Event를 처리할 때 주로 사용하기 때문에 RxCocoa를 import 해야 사용할 수 있어요. 1. PublishRelay PublishRelay는 PublishSubject의 Wrapper 클래스입니다. 따라서 PublishSubject의 특성을 따라가기에 구독 이후에 방출되는 이벤트들만 알수 있어요. 큰 틀에서 보면 PublishSubject랑 구조적으로 차이라 할 게 별로 없

2022년 7월 17일
·
0개의 댓글
·
post-thumbnail

GraphQL로 React의 생각들을 우아하게 채워주는 방법 - Relay

✨ 들어가기 안녕하세요 👏 이번 포스팅은 facebook에서 만든 framework인 Relay의 공식문서중 일부인 Thinking in Relay 를 읽고 번역한 글 입니다. React를 만든 회사에서 만든 제품이다보니 React의 생각과 align 되어있는 점이 많은 framework 입니다. Relay를 사용하지 않더라도 React를 사용한다면 Relay팀이 React 컴포넌트를 구현하면서 맞닿은 문제들을 어떻게 해결해나갔는지 읽어보는 것 만으로도 컴포넌트를 어떻게 구성해야 할지에 대한 도움을 많이 얻을 수 있는 글이라고 생각합니다. 앞으로 이어질 내용으론 공식문서를 최대한 번역체 스럽지 않게(?) 번역해보려고 노력한 공식문서의 번역 내용과 이를 요약하면서 느낀점을 같이 정리해보려고 합니다. 번역에 이상한 부분이 있거나 좀 더 좋은 표현을

2022년 6월 12일
·
1개의 댓글
·
post-thumbnail

GraphQL - Graphene: 8(Relay: Nodes)

Graphene Node에 대해 공부하기에 앞서 GraphQL에서 사용하는 cursor 개념 자체를 먼저 알아보도록 한다. Cursor 페이지네이션에는 두 가지 개념이 있다. offset/limit 기반 cursor 기반 graphQL에서는 각 node의 주소를 cursor라 한다. Apollographql에서 설명하는 offset/limit 페이지네이션의 문제점 [그림1] [그림2] [Apollographql 제공](https://www.apollographql.com

2022년 5월 4일
·
0개의 댓글
·
post-thumbnail

Subject와 Relay

Subject 발행할 것이 미리 정해진 Observable과는 다르게 일단 구독을 하고 추후에 발행을 하는 객체가 Subject입니다. Observable과의 차이 | Observable | Subject | | --- | --- | | 누군가가 구독을 해야 발행 | 구독을 하지 않아도 개발자가 원하는 때에 발행 가능 | | 각 구독자에게 따로 발행 | 모든 구독자에게 동시에 발행 | Subject의 종류 Publish Subject 가장 기본이 되는 Subject입니다. 구독하기 전에도 발행할 수도 있지만 구독하지 않으면 이벤트를 받을 수 없습니다. Behavior Subject 초기 값을 가지는 subject입니다. 항상 마지막으로 발행된 값으로 초기 값을 갱신합니다. Relay Subject Behavior Subject와 유사하게 초기 값을 가지고 있지만 여러 개의 초기 값을 가지고 있다는 차이점이 있습니다.

2022년 3월 30일
·
0개의 댓글
·
post-thumbnail

Yarr와 Relay를 이용해 Render-as-you-fetch 라우팅을 구현하기

이 포스트는 Contra 로부터 후원을 받아 작성된 포스트입니다. 일반적으로 React 기반의 CRUD SPA앱을 개발하다 보면 가장 신경쓰게 되는 부분이 데이터 페칭 방식이다. CRUD SPA 앱은 보통 서버에서 보내주는 내용을 UI에서 표시하고, 사용자와의 인터랙션을 통해 원격으로 존재하는 데이터를 조작하는 사용 흐름을 가지고 있다. 하지만 앱이 점점 크고 복잡해질수록 사용자 경험은 나빠지고, 버그가 발생하기 쉬워진다. 이런 현상에 대한 대안으로서 Facebook에서 개발한 프레임웍이 Relay인데, 'Render as you fetch'라는 렌더링과 데이터 로딩 방식을 달성하기 위함이다. Render-as-you-fetch란 무엇인가 React 문서에서는

2022년 2월 15일
·
0개의 댓글
·
post-thumbnail

GraphQL - 4

Client 에서의 graphql 그래프 큐엘을 보면 클라이언트에서 백엔드로 그래프 큐엘 쿼리 요처을 보내고 백엔드 내부의 GraphQL Server에 의해 Datastore와 통신을 주고 받으며 받은 데이터를 클라이언트로 보낸다고 하였습니다. 이때 클라이언트 쪽에서 쿼리를 생성해서 보내고 다시 받은 데이터를 클라이언트앱에 전해주는 역할을 GraphQL Client 라고 합니다. GraphQL client 이러한 GraphQL client의 종류는 자바스크립트에서 3가지가 있습니다. Lokka 매우 간단

2022년 2월 13일
·
0개의 댓글
·
post-thumbnail

GraphQL clients

Relay 퍼포먼스 최적화 등 만질 수 있는 부분이 많아 초보에게 어렵다. 페이스북이 만듦, 2012년부터 그래프큐엘 쓰며 가져온 (10년..) 노하우들이 담겨있다고.. 원래는 라우팅에 사용되는 라이브러리였다는데 Apollo community driven (Relay랑은 다르게) easy to understand 모든 플랫폼에 적용될 수 있는 라이브러리 (모바일, 웹..)가 목표 그래서 iOS, React, .. caching, optimisitic UI, subscription support.. Urlq 위의 두개에 비해 newer project 이다. young blood.. React에 집중하는 대신 단순하게 만듦

2022년 2월 1일
·
0개의 댓글
·

[RxSwift] 2. Subject

Subject Observable이자 Observer이다. .next(value)를 받고, 수신할 때마다 Subscriber에게 방출한다. Sequence가 종료된 Subject를 subscription할 경우, 마지막 Event(.error 혹은 .completed) 를 방출한다. Sequence가 종료된 Subject에 대하여 dispose를 호출하면 오류가 출력된다. Relay와의 차이점 Relay는 complete나 error를 받지 않는다. Relay는 observable이 종료되어도, relay 내의 subject 종료되지 않는다. 따라서, observable의 종료가 절대적으로 보장되지 않는다면, relay.bind 하는 것은 바람직하지 않다. PublishSubject 초기값이 존재하지 않으며, 새로운 값만을 Subscriber에게 방출한다. `Beh

2022년 1월 9일
·
1개의 댓글
·
post-thumbnail

GraphQL 은 무엇인가? - client 편

이번 프로젝트에서 백엔드 분께서 Graph QL을 도전적으로 도입해보자는 말씀을 해보셨다. 처음에는 써보지 않은 기술이라 덜컥 겁이 났지만 동료분의 문제의식에 가슴 깊이 공감하기 때문에 도전 해보기로 마음먹었다. > 문제 의식: REST API 를 설계 하는데 많은 시간과 노력이 든다. > 이 글은 프론트엔드(클라이언트) 입장에서 GraphQL을 적용하는 것이 무엇이 좋은지, 적용한다면 어떻게 적용해야하는지(어떤 프레임워크를 써야하는지?)에 대한 고민을 담고있는 글 입니다. 구체적으로 어떻게 작동하고있는지에 대한 설명은 최대한 가볍게 설명하고 넘어갔습니다. GraphQL 무엇이고, 왜 쓰려는 걸까? 제가 생각 했을 때 GraphQL을 가장 잘 설명하는 그림은 아래의 그림이라고 생각합니다. 저도 아래의 그림을 보고 와 이런 신박한 기술(?) 이 있어? 라고 생각하고 시도를 해보려고 했죠. ![](http://tech.kakao.com/files/gra

2021년 10월 3일
·
0개의 댓글
·

프록시서버와 릴레이 서버의 차이점

차이점이 궁금한 이유 현업에서 프록시 서버를 릴레이 서버라고 지칭하며 내가 알고 있는 프록시 서버의 개념을 헷갈리게 할때가 있다. 그래서 둘의 차이점을 구글링해 정리해보자 용어 설명 DHCP: Dynamic Host Configuration Protocol(네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미하고, 해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜) 프록시와 릴레이의 차이점 Relay 서버와 Proxy 서버 모두 단말과 서버 사이에서 메시지를 전달(relay)해 주는 기능을 수행합니다. DHCP Relay Agent는 중간에서 DHCP 메시지를 전달해 주는 기능이 전부인 반면, DHCP Proxy Agent의 경우, 단말에게는 DHCP Proxy Agent가 DHCP 서버인 것 처럼 보이게 하고, DHCP 서버에게는 DHCP Proxy Agent가 단말인 것 처럼 보이도록 하는

2021년 6월 14일
·
1개의 댓글
·
post-thumbnail

[iOS] RxSwift Subject, Relay, RxCocoa

📕Subject란? Subject는 Observable, Observer의 역할을 모두 할 수 있습니다. 이전에 배운 Observable은 unicast방식이지만, Subject는 multicast방식으로, 여러개의 observer를 subscribe 할 수 있습니다. 📌Subject와 Observable의 차이 |Observable|Subject| |:------:|:------:| | 단지 함수이며 state가 없음 | state가 있으며, data를 메모리에 저장함 | | 각각의 옵저버에 대해 코드가 실행| 같은 코드 실행, 모든 옵저버에 대해 오직 한번만 | | Data Producer | Date Producer and Consumer

2021년 5월 7일
·
0개의 댓글
·

relay vs apollo client

Intro 현재 UOS공지사항의 백엔드 작업을 마무리하는 단계이다. Nestjs로 백엔드 서버를 작성하였다. API는 GraphQL을 사용하였다. UOS공지사항은 React Native를 사용하는 모바일 앱이 있고 앞으로 React를 사용하는 웹을 추가적으로 서비스할 예정이다. 클라이언트(React, React Native)에서의 데이터 요청을 새로운 서버(graphql)에 맞춰서 수정을 진행하려한다. 클라이언트에서 graphql을 잘(?)사용하기 위해 고민한 내용을 글로 적어보려고 한다. 별도의 graphql client가 필요할까? 기본적으로 graphql은 HTTP POST Method로 요청을 보낸다. body에 query와 variables을 담아서 요청을 보내면 된다. 따라서 단순히 graphql의 Query와 Mutation을 사용할때는 별도의 라이브러리가 필요가 없다. 하지만 별도의 graphql라이브러리를 사용하는것에 대한 이점도 있다.

2021년 3월 26일
·
0개의 댓글
·

django-graphql[relay]

Graphene 에는 Django 작업을 정말 간단하게 만들 수 있도록 설계된 여러 추가 기능이 있습니다. https://docs.graphene-python.org/projects/django/en/latest/tutorial-relay/ 부분에서 basic 가 크게 다른 부분이 없었다. all_ingredients 를 통해서 모든 ingredients 를 제공해줄수있고 , ingredient 를 통해서 특정한 데이터를 얻을 수가 있다. /ingredients/schema.py filter filtering 기능은 django_filter 에 의해 제공되어진다. https://django-filter.readthedocs.io/en/latest/guide/usage.html#the-filter 위의 url 에 filter 에 대한 사용 문서가 나와있는데 위의 url 을 참고하면 된다. __ 부모 레벨의 schema.py 를 만들

2020년 9월 27일
·
0개의 댓글
·
post-thumbnail

How to GraphQL - 10. Common Questions

- 본 시리즈에서는 How to GraphQL의 Tutorial 문서들을 차례대로 번역합니다. > - 이 글은 GraphQL Advanced - Common Questions을 번역한 글입니다. > - 오역 또는 의역이 있을 수 있습니다. 양해 부탁드리며, 수정할 필요한 부분은 댓글로 요청해주세요. 공통적인 질문들 GraphQL은 데이터베이스 기술인가요? 아닙니다. GraphQL은 종종 데이터메이스 기술로 혼동되곤 합니다. 이는 오해이며, GraphQL은 API를 위한 쿼리 언어이지 데이터베이스가 아닙니다. 이런 맥락에서, GraphQL은 데이터베이스의 종류와 상관없이 사용할 수 있으며, 심지어 데이터베이스가 없어도 됩니다. GraphQL은 React / Javascript 개발자만을 위한

2019년 9월 30일
·
5개의 댓글
·
post-thumbnail

How to GraphQL - 5. Clients

- 본 시리즈에서는 How to GraphQL의 Tutorial 문서들을 차례대로 번역합니다. > - 이 글은 GraphQL Advanced - Clients을 번역한 글입니다. > - 오역 또는 의역이 있을 수 있습니다. 양해 부탁드리며, 수정할 필요한 부분은 댓글로 요청해주세요. 심화 튜토리얼 - 클라이언트 프론트엔드에서 GraphQL API를 사용하는 것은 새로운 추상화를 개발하고 클라이언트 사이드에서 공통 기능을 구현하는 데에 도움이 될 수 있는 절호의 기회입니다. 어플리케이션에서 필요로 할 만한 "기반 인프라" 기능 몇 가지를 아래에서 생각해봅시다. HTTP 요청을 구성하지 않고 쿼리 또는 뮤테이션을 직접 전송하기 뷰 레이어 통합 캐싱 (Caching) 스키마에 기반한 쿼리의 유효성 검사 및 최적화

2019년 9월 23일
·
0개의 댓글
·