“인디오홀덤 | 오마하게임 API를 위한 유연한 쿼리 언어” 그래프QL 제대로 시작하기

인디오홀덤 | 오마하게임 페이스북이 개발해 모두가 사용할 수 있도록 오픈소스 표준으로 공개한 그래프QL(GraphQL)은 REST API의 대안을 표방한다. 그래프QL은 REST와 마찬가지로 웹 기반 API를 만들고 소비하는 방법을 제공하지만, 쿼리와 반환된 데이터는 형식 스키마와 유형 시스템을 사용해 일관성을 보장한다.

여기서는 그래프QL API 설계와 구현의 기본 사항을 살펴보고 여러 가지 주요 고려 사항과 이 과정에서 내리게 되는 의사 결정에 대해 알아본다.

인디오홀덤 | 오마하게임 그래프QL 언어와 프레임워크
웹 애플리케이션 API로 그래프QL을 사용할 계획이라면 이미 사용 중인 언어 및 데이터 구성요소가 이를 지원할 가능성이 높다. 그래프QL 라이브러리는 프로덕션에 사용되는 거의 모든 주요 언어에 제공된다. 클라이언트는 C#/닷넷, 고, 자바, 안드로이드, 자바스크립트, 스위프트/오브젝티브 C, 파이썬용으로 제공되며 서버 라이브러리는 그보다 더욱 광범위하게 지원된다.

완전히 새로 시작한다 해도 다른 프로젝트에서 가장 익숙한 언어와 런타임, 데이터 계층을 선택하는 것이 최선이다. 그래프QL은 서버나 클라이언트에 많은 제약을 두지 않으며 데이터베이스를 가리지 않는다. 다만 데이터 계층에 따라 얼마간의 수동 통합이 필요할 수는 있다. (이 부분에 대해서는 다음 섹션에서 더 자세히 살펴본다.)

인디오홀덤 | 오마하게임 여기서는 참고용으로 그래프QL의 파이썬 구현을 사용한다. 개념과 기능은 다른 언어에서도 대체로 동일하다.

그래프QL의 데이터 쿼리 스키마
그래프QL은 다양한 계층 구조의 강한 유형의 필드에서 구성된 쿼리를 받는다. 그래프QL API를 만들 때 가장 잘 생각해야 하는 부분은 쿼리에 제공할 스키마다.

많은 경우 쿼리 필드를 기반 데이터 소스에 일 대 일로 매핑해서 쿼리를 위해 데이터베이스(또는 다른 데이터 소스)의 모든 관련 필드를 노출할 수 있다. 그래프QL 쿼리는 REST 쿼리에 비해 훨씬 더 제약이 없고 다양할 수 있으므로 처음부터 쿼리 가능한 필드와 이러한 필드를 데이터베이스에 매핑할 계획을 세워야 한다.

예를 들어, 영화를 위한 데이터베이스 테이블이 있고 이 테이블에 title과 year(정수)가 있다면 다음과 같은 그래프QL을 사용할 수 있다.

type Character {
title: String!
year: Int
}

String 뒤에 나오는 !는 필드가 필수임을 의미하므로, 이 쿼리를 수행하려면 최소한 제목은 필요할 것이다.

또한 그래프QL을 통해 노출하는 필드가 기반 데이터와 정확히 일치하는 유형을 사용하도록 해야 한다. 예를 들어 그래프QL에는 기본 “date” 또는 “datetime” 데이터 유형이 없다. 사용 가능한 구현이 매우 다양하다는 것이 주된 이유다. 날짜 범위에 따른 검색을 허용하려면 API를 통해 가져온 날짜의 서식을 강제하고, 쿼리할 때 이러한 날짜 요청이 백엔드 데이터베이스에 적절한 유형으로 변환되도록 해야 한다.

사용 중인 프레임워크에 따라 이 작업이 이미 이뤄졌을 수도 있다. 파이썬에서 인기 있는 그래프QL 라이브러리인 그래핀(Graphene)은 ISO-8601 형식의 날짜-시간 값을 유형 네이티브로 제공하므로 직접 처리할 필요가 없다.

인디오홀덤 | 오마하게임 데이터 집합에 많은 필드가 있다면 복잡한 유형 강제가 불필요한 최소 기능 하위 집합을 노출하는 것부터 시작한다(예를 들어, 간단한 문자열 또는 숫자 쿼리). 그런 다음 사용 중인 그래프QL 커넥터를 통해 쿼리를 구현하는 방법을 파악하면서 사용 가능한 필드를 점진적으로 확대할 수 있다.

그래프QL 데이터 저장과 검색
백엔드에 데이터를 저장하고 검색하려면 일반적으로 사용 중인 언어의 그래프QL 라이브러리에서 지원하는 미들웨어를 사용한다.

많은 경우 일반적인 애플리케이션 프레임워크의 데이터 계층을 통해 그래프QL이 이 작업을 수행하도록 할 수 있다. 예를 들어 파이썬의 그래프QL용 그래핀 라이브러리는 장고(Django) 웹 프레임워크와 함께 장고의 내장된 ORM을 지원한다. 그래핀은 SQL알케미(SQLAlchemy) ORM을 지원하며, 인기 있는 스탈렛(Starlette)과 패스트API(FastAPI) 프레임워크에 대한 지원도 추가됐다. 또한 구글 앱 엔진의 데이터 커넥터, 릴레이 자바스크립트 프레임워크(리액트에 사용됨)와 상호운용이 가능하다.

이런 구성요소에 의해 기술되지 않은 데이터 계층을 사용하는 경우 그래핀의 미들웨어와 DataLoader 객체를 사용해 빈 틈을 채울 수 있다. 이 둘은 데이터 계층에 필요한 통합을 수동으로 연결할 수 있게 해준다. DataLoader를 사용하면 관련 데이터에 대한 여러 개의 통시 요청을 합쳐서 백엔드를 오가는 횟수를 줄일 수 있다.

한편 이 중 어느 것도 애플리케이션의 아무 계층에서 직접 캐싱을 수행하는 것을 막지는 않는다. 예를 들어 반환하는 응답은 프록시를 사용하여 캐시할 수 있고, 백엔드 데이터는 멤캐시드(Memcached) 또는 레디스를 사용해 캐시할 수 있다. 다만 데이터가 변경될 때마다 이러한 캐시를 비우는 작업도 직접 챙겨야 한다.

인디오홀덤 | 오마하게임 그래프QL 쿼리와 뮤테이션
그래프QL은 “뮤테이션(mutation) 쿼리”라고 하는 특정 쿼리 형식을 사용해서 데이터 집합에서 요소를 생성, 업데이트하거나 삭제한다. 이러한 쿼리가 작동하는 방식, 즉 어느 쿼리를 허용하고 어느 필드를 요구할지 뿐만 아니라 뮤테이션 후 쿼리에서 어떤 데이터를 반환할지에 대해서도 잠시 생각해 보자.

뮤테이션 쿼리를 설계할 때 원하는 수만큼의 출력 필드를 반환하도록 허용할 수 있다. 그러나 응답 객체를 한두 계층 이상으로 중첩하는 것은 대체로 좋은 생각이 아니다. 그렇게 하면 쿼리 자체를 볼 때, 그리고 결과를 처리하기 위한 코드를 작성할 때 모두 결과를 구문 분석하기가 어렵기 때문이다.

또 다른 중요한 주의 사항은 오랜 REST API 설계 습관이 뮤테이션 쿼리 작성 방식에 영향을 미치지 않도록 하는 것이다. 예를 들어 동일한 객체에 대한 여러 종류의 변경을 처리하기 위해 여러 뮤테이션 쿼리를 만드는 대신(REST에서 일반적인 패턴) 하나의 뮤테이션 쿼리로 통합할 수 있다. 이를 위한 한 가지 방법은 이 예제의 “upvote/downvote”와 같이 별도의 비선택적 필드를 사용해서 가능한 각 작업을 기록하는 것이다.

또 다른 방법은 값 필드와 열거형을 함께 사용해서 이 값으로 원하는 동작을 기술하는 것이다. 열거형의 한 가지 큰 장점은 모호하지 않은 명확성이다. 즉, 열거형을 사용해서 정확하게 의도를 반영할 수 있으므로 고도의 자체 문서화가 가능하다. 어느 언어든 언어의 그래프QL 라이브러리는 대부분 언어 자체의 개념 구현과 일치하는 열거형을 사용할 방법을 제공한다. 예를 들어 파이썬용 그래핀의 그래프QL 열거형은 파이썬 표준 라이브러리 enum 클래스와 상당히 비슷해 보일 수 있다.

그래프QL 캐싱과 성능 가속화
내부적으로 그래프QL 쿼리는 다른 쿼리와 마찬가지로 데이터를 폴링하고 검색한다. 즉, API 쿼리 속도를 높이기 위해 사용되는 많은 방법을 똑같이 사용해서 가속화할 수 있다.

캐싱 : 데이터베이스를 백엔드로 두거나 프론트엔드에서 데이터를 반환하는 모든 서비스는 두 끝단 모두에서 캐싱을 통한 이점을 얻을 수 있다. 단, 이러한 캐시의 만료에 대한 책임은 여러분 각자에게 있음을 유의해야 한다. 따라서 앞서 그래핀용으로 설명한 것과 같은 그래프QL 프레임워크의 미들웨어 후크를 사용해서 만료를 트리거해야 할 수 있다. 가능한 고유 식별자를 사용해서 클라이언트 측 캐싱을 지원하는 것이 좋다.
커서와 페이지 매김 : 클라이언트와 서버의 과부하를 방지하기 위해서는 요청에 한 번에 반환하는 레코드의 수에 대한 기본 상한선이 필요하다. 또한 클라이언트가 반환할 레코드의 최대 수와 요청할 레코드의 “페이지”를 명시적으로 기술하도록 허용하는 것이 좋다. 공식 그래프QL 문서에서 그래프QL 요청 형식에 페이지 매김 메타포를 통합하는 방법에 관한 몇 가지 유용한 팁을 볼 수 있다.

그래프QL 툴
다양한 언어용으로 제공되는 라이브러리 외에, 그래프QL에는 클라이언트, 서버, 스키마, 쿼리 처리 계층을 더 쉽게 개발하기 위한 다음과 같은 다양한 네이티브 및 서드파티 툴이 있다.

인디오홀덤 | 오마하게임 아폴로 그래프QL(Apollo GraphQL)은 그래프QL 클라이언트와 그래프QL 서버를 포함한 그래프QL을 위한 오픈소스 툴을 만드는 데 전력한다. 또한 아플로 그래프QL은 그래프QL 스키마를 생성 및 모킹하고 여러 API를 하나의 API로 “이어 붙이기” 위한 일련의 유틸리티인 그래프QL 툴도 유지관리하면서 여러 API 엔드포인트를 통합하고 관리 편의성을 높인다는 그래프QL의 목표를 추구한다.
기존 스웨거(Swagger) 생성 API를 그래프QL로 이식하려는 경우 스웨거2그래프QL(Swagger2GraphQL)을 사용하면 된다. 또한 이 툴은 레거시 스웨거 생성 API를 함께 유지하도록 허용하므로 전환 기간 동안 두 가지 표준을 모두 사용할 수 있다.
마지막으로, 페이스북 자체 그래프QL 그룹도 몇 가지 주목할 만한 툴을 만들었다. 그래피QL(GraphiQL)은 그래프QL 쿼리를 생성하기 위한 브라우저 내 IDE다. 내부적으로 또는 공개 솔루션으로 사용 가능하다. 그래프QL의 자바스크립트 구현인 그래프QL 오버 HTTP(GraphQL-over-HTTP) 서버 및 클라이언트 제품군, 그리고 IDE를 위한 그래프QL 언어 서비스도 있다.
editor@itworld.co.kr

원문보기:
https://www.itworld.co.kr/topnews/343305#csidxd2c0d78f2d7c483ae707bb313070268

필 아이비를 포커의 최고로 만드는 것은 무엇일까?

목요일에 아이비는 이벤트 #29: $10,000 리미트 2-7 로우볼 트리플 드로 챔피언십(6인)에서 우승하면서 11번째 월드 시리즈 오브 포커(WSOP) 브레이슬릿을 획득했습니다. 이로써 그는 필 헬무스가 보유한 17개 브레이슬릿에 이어 2위에 올랐습니다 .

2024 월드 시리즈 오브 포커 허브
이 페이지를 북마크하세요! 2024 WSOP에 대해 알아야 할 모든 것이 여기에 있습니다.

여기를 클릭하세요
하지만 Ivey가 Hellmuth나 다른 플레이어보다 더 뛰어나다는 일반적인 역대 최고(GOAT) 주장은 그가 캐시 게임과 라이브 토너먼트에서 모두 우위를 점했고, 예전에 Full Tilt Poker 에서 온라인에서 큰 승리를 거두었다는 것입니다. 새로 WSOP 챔피언이 된 그는 World Poker Tour(WPT) 타이틀을 두 번(Hellmuth, 0), The Hendon Mob에 따르면 라이브 토너먼트 캐시에서 4,530만 달러(Hellmuth 3,000만 달러)를 획득했으며, 세계에서 가장 높은 스테이크 캐시 게임 중 일부를 압도한 것으로 알려져 있습니다.

필 아이비가 포커계 최고의 인물이라는 데에 다들 동의하시나요?
필 아이비 포커 GOAT필 아이비
아이비가 11번째 브레이슬릿을 획득하기 몇 년 전, 많은 포커 팬과 플레이어는 이미 그를 GOAT라고 불렀습니다. 여기에는 포커 명예의 전당 멤버인 다니엘 네그레아누 도 포함되는데 , 그는 오랜 친구이자 상대가 역대 최고라고 오랫동안 주장해 왔습니다. 그는 11번째 브레이슬릿을 획득한 새로운 우승자를 축하했고 금요일 WSOP 블로그 에서 자신의 주장을 반복했습니다 .

PokerNews 에서는 WSOP의 몇몇 플레이어에게 아이비가 최고라고 생각하는 이유를 물었고, 이 분야의 최고 플레이어 중 일부로부터 흥미로운 답변을 들었습니다.

“그렇죠, 예전에 그가 잭잭엑스로 퀸에이트를 6배팅해서 어떤 남자를 상대로 하는 걸 보는 건 정말 대단했어요. 그때부터 저는 그의 열렬한 팬이 되었어요.” 3회 WSOP 브레이슬릿 우승자이자 Chip Leader Coaching 의 창립자인 Chance Kornuth가 말했습니다. “그래서, 그는 9개의 다른 게임에서 브레이슬릿을 따냈던 것 같아요. 그게 그가 얼마나 뛰어난지 보여주는 것 같아요.”

이벤트 #39: $50,000 하이 롤러 노 리미트 홀덤(8-핸드) 에 참가하고 있는 열렬한 포커 플레이어 UFC 아나운서 Bruce Buffer 는 Ivey를 칭찬했습니다.

“당신도 알다시피 Phil은 놀라운 인내심과 놀라운 기술을 가지고 있습니다. 당신은 그를 읽을 수 없습니다. 마치 벽을 바라보며 그가 당신을 보고 웃고 있다고 생각하는 것과 같습니다. 수년간의 경험. 녹색의 전사 정신이 챔피언들의 전투를 느꼈습니다. 그리고, 현실을 직시하자면, BSC(공, 기술, 자신감)가 필요합니다. 그렇죠? 하지만 이 일을 이기기 위해서는 10~20%의 행운 요소가 필요합니다.”라고 Buffer는 주장합니다.

Ivey가 GOAT라고 확신하지 못하는 포커 플레이어 중 하나는 Hustler Casino Live 에 몇 번 출연한 아마추어 플레이어인 복서 Ryan Garcia 입니다. 대신 Garcia는 Tom Dwan이 역대 최고라고 믿고 Ivey는 근소한 차이로 2위를 차지했습니다.

Garcia의 트윗에 대한 답변으로 Dwan은 칭찬에 감사하지만 Ivey와 달리 “훌륭한 토너먼트 기록”이 없다고 주장했습니다. Dwan은 라이브 토너먼트 캐시에서 690만 달러를 획득했지만 WSOP 브레이슬릿을 획득한 적이 없습니다. 그는 항상 하이 스테이크 캐시 게임 전문가였고, Ivey와 마찬가지로 2000년대 후반에 Full Tilt Poker에서 가장 큰 게임을 강타한 것으로 유명합니다.

[com] WPT 글로벌 패스포트 달러 728×90
“그는 매우 재능 있는 선수이고, 재능 있는 사업가입니다.” 알렉세이스 포나코프스가 아이비에 대해 말했다. “그에 대한 모든 것이 미쳤습니다.”

나초 바베로는 2-7 경기에서 아이비의 성과에 깊은 인상을 받았고 11회 브레이슬릿 우승자를 “역대 최고의 선수”라고 자신 있게 언급했습니다.

포커에서 가장 권위 있는 시리즈에서 타이틀 기록 보유자라는 점을 감안하면 Hellmuth가 역대 최고라는 주장이 분명히 있습니다. 그리고 Doyle Brunson , Chip Reese , 그리고 몇몇 다른 선수들의 GOAT 지위를 주장할 수도 있습니다. 하지만 포커 팬들에게 역대 최고의 포커 선수를 꼽으라고 하면 Ivey가 가장 흔한 대답이라는 데는 의심의 여지가 없습니다.

루스 홀, 20위로 WSOP 레이디스 이벤트에 “아마도 마지막”으로 진출

2024년 월드 시리즈 오브 포커(WSOP) $1,000 바이인 레이디스 노 리미트 홀덤 챔피언십은 올해 텍사스 포커 프로 루스 홀 에게 특히 의미가 큽니다 . 그녀는 이 토너먼트에 20번째로 참가합니다. 하지만 건강 문제로 인해 그녀의 마지막이 될 수도 있습니다.

“Ruthless”라는 그녀의 별명은 1일차 저녁 휴식 시간에 PokerNews 금요일에 그녀의 상황을 설명하기 위해 대화를 나누었습니다. 언제나 그렇듯이 그녀는 기분이 좋았고, 물론 펠트에서 그녀의 상대를 압도하는 데 바빴습니다.

2024 월드 시리즈 오브 포커 허브
이 페이지를 북마크에 추가하세요! 2024 WSOP에 대해 알아야 할 모든 것이 여기에 있습니다.

여기를 클릭하세요
그녀가 연주하게 된 동기는 무엇일까?
메인 이벤트 외에 20년 동안 같은 WSOP 이벤트를 플레이한 사람은 거의 없습니다. 그렇다면 홀은 레이디스 챔피언십에서 무엇을 그렇게 좋아할까요?

“동지애, 우정, 일년에 한 번만 볼 수 있는 여성들”이라고 그녀는 설명했다. “여기 와서 그들을 껴안고, 계속 노력하고, 계속 플레이하고, 게임을 성장시키라고 말하고 싶어요.”

홀은 수년 동안 포커에서 여성을 끊임없이 홍보해 왔습니다. 그녀는 WSOP뿐만 아니라 전국의 다양한 여성 전용 이벤트에 등장하는데, 5월에 Choctaw Casino에서 열리는 World Poker Tour(WPT) 시리즈도 포함됩니다.

텍사스 라운드 록에 거주하는 Hall이 처음 WSOP의 레이디스 이벤트에서 플레이하기 시작했을 때 토너먼트는 7개의 카드 스터드와 리미트 홀덤이 혼합된 방식이었습니다. 그 당시에는 매년 200명 이하의 선수가 토너먼트에 참가했습니다. 올해 1일차에는 1,200명이 넘는 참가자가 있었으며, Tamar Abraham 이 $192,167에 우승한 작년 이벤트에는 1,295명의 참가자가 기록적 으로 기록되었습니다 . 그녀는 이 행사가 수년에 걸쳐 그렇게 많은 성장을 보인 이유를 설명했습니다.

Hall은 “글쎄요, 아주 작은 규모로 시작했지만 동결되었을 때 선택적인 재구매를 한 번도 받은 적이 없었습니다”라고 말했습니다. “그래서 선택적인 리바이는 분명히 상금 풀에 기여하는 것입니다. 저는 그 부분이 마음에 듭니다. 또한 게임에 참여하고 싶어하는 젊은 여성이 점점 더 많아지고 있다고 믿습니다.”

Hall은 또한 자신이 지원하는 WPA(Women’s Poker Association)와 같은 조직에서 제공하는 프로모션(자선 행사 등)으로 인해 출석률이 증가했다고 말했습니다.

“포커는 언제나 거기 있을 것이다”
루스 홀 2024 WSOP루스 홀
홀은 WSOP에서 플레이하기 위해 라스베이거스로 여행하는 것을 좋아하지만, 올해가 그녀의 마지막 여행이 될 수도 있다고 말합니다. 그녀는 심장병을 앓고 암과 싸우고 있을 뿐만 아니라, 그녀의 남편인 키스 홀은 말기 질환을 앓고 있습니다.

“저는 이것이 나의 마지막 여성 행사가 될 것이라고 믿습니다. 모두가 알고 있듯이 저는 건강 문제가 있었고 남편은 만성 질환을 앓고 있습니다. 그래서 우리는 약간의 여행을 하고 그가 하고 싶은 모든 것을 할 것입니다. “라고 홀이 말했다.

부부의 건강 문제에도 불구하고 “Ruthless”는 게임을 포기하지 않았습니다. 그녀는 텍사스의 지역 포커 룸인 The Lodge Card Club에서 정기적으로 계속 플레이할 것이라고 말했습니다. The Lodge Card Club 은 Doug Polk , Andrew Neeme , Brad Owen 이 공동 소유하고 있습니다 .

[com] WPT 글로벌 패스포트 달러 728×90
포커 프로 세 명은 샌안토니오에서 Rounders Card Club을 구입 했으며 7월 3일에 인수할 예정입니다. Hall은 그랜드 오프닝에 참석하고 싶지만 그날 그녀의 남편은 종양 전문의를 방문합니다.

홀은 자신의 건강 문제가 진행되었고 “암이 뇌종양으로 바뀌었고, 그것이 심부전으로 바뀌었다”고 설명했습니다. 긍정적인 점으로, 그녀의 심장 기능이 10%에서 50%로 오르면서 그녀의 상태가 다소 호전되었습니다. 건강 문제가 있든 없든, 헨던 몹이 펠트에서 현금화한 거의 50만 달러를 가진 이 포커 플레이어를 계속 붙잡아둘 수는 없습니다.

“내 생각에는 당신이 그 여자에게서 포커를 빼앗을 수는 없을 것 같아요. 그렇죠?” 홀이 웃으며 물었다.

Hall은 첫날에 강한 출발을 했고, 스택을 많이 잃었지만 빠르게 반격했습니다. 금요일 밤 늦게 출판 당시 그녀는 약 100개의 빅 블라인드 스택을 쌓아 칩 리더 중 하나가 되었습니다.