Slackbot
08/11/2022, 5:44 AMTony Won
클라이언트 <-강결합(GraphQL)-> BFF 서버 <-약결합(RPC)-> 마이크로서비스
사실 클라이언트와 BFF는 한 몸이지만... 인터넷이라는 비극으로 인해 찢어지게 된 거죠 ㅋㅋ (PHP 같은 친구들은 강결합 되어있죠 ㅋㅋ)
따라서 GraphQL은 클라이언트 상태와 리모트 데이터를 더 우아하게 강결합할 수 있는 방법에 가깝지 않나 하는 생각이에요.menmen
08/11/2022, 7:22 AMTony Won
MSA 환경에서도 중심에 가깝게 위치를 하고 있고,요 이야기는 Aggregation을 담당하는 서비스를 만들고 계신다는 뜻일까요?
API가 굉장히 많은 상황인데, API 들 간에 중복도 많고, 오버페칭도 굉장히 많이 일어나고 있고API가 파편화 된 상황에서 오버페칭은 피할수 없을거같아요 ㅎㅎ (조금 더 자세히 설명 주시면 의견 드릴 수 있을거같네요!) 만약 N+1 문제라면 batch get api를 통해서 최적화할 수 있을거같아요.
menmen
08/11/2022, 7:37 AMTony Won
Tony Won
menmen
08/11/2022, 7:47 AMTony Won
menmen
08/11/2022, 7:48 AMTony Won
Tony Won
menmen
08/11/2022, 7:52 AMmenmen
08/11/2022, 7:53 AMmenmen
08/11/2022, 7:53 AMXiNiHa
08/11/2022, 10:57 AMXiNiHa
08/11/2022, 10:58 AMXiNiHa
08/11/2022, 10:59 AM김경덕
08/11/2022, 11:58 AMAggregation이라기 보다는 저희팀 데이터(를 제공하는 API) 에 의존하는 타 시스템이 많다는 의미었습니다!
각 시스템에서 요구하는 API가 비슷하면서도 조금씩 다르기 때문에 각각의 요구사항을 다 들어주면서 API를 계속적으로 추가하다보니,
코드의 중복도 많고, 어떤 API가 여전히 쓰이고 있는지, 어떤 필드들이 쓰이고 있는지 이런것들이 시간이 지날수록 관리가 어려워지는 것 같아 GraphQL로 해소를 해보고자 생각을 해보았습니다!이 부분에 대해서 두가지 측면으로 살펴봐야할거 같아요. • 사내에 플랫폼으로서 만드는 서비스 ◦ 제가 다니는 회사가 이런 접근을 많이 하는데요, 만약 채팅팀이 있다면 여기서는 하나의 서비스를 위해 fit하게 디자인 하지 않고 많은 서비스들을 위해 설계하고 있어요. 마치 제가 디스코드 API를 이용할때 디스코드 측에서 저한테 fit하게 api를 뚫어주지 않은것 처럼요. 다만 각 서비스들이 요구하는것을 사내서비스들이다보니 좀더 잘 들어주지만 결국
유저의 목소리에 대한 플랫폼으로서의 대응
을 하는거 같아요. 디스코드가 각각의 고객마다 API를 새로 파지 않고 각 고객이 만족할수 있게 기존 API에 기능이나 필드를 추가할거 같아요.
• 다른 사내 제품들을 서포트하기 위한 서비스
◦ 이러면 각 사내 서비스들에 하나 하나 fit하게 맞게 api를 만들어야해서 어떤식으로든 코드 중복은 피할수 없지 않을까 싶어요. 이게 서로 다른팀이 다른것을 요구하면 서로 다른 이유로 변경되기 때문에 중복으로서 추상화해야하는게 아니라 우발적 중복(우연히 비슷해보이는 중복)으로 봐야할거 같아요menmen
08/12/2022, 2:34 AMmenmen
08/12/2022, 2:38 AMXiNiHa
08/12/2022, 2:39 AMHyeseong Kim
08/12/2022, 3:38 AMHyeseong Kim
08/12/2022, 3:39 AMHyeseong Kim
08/12/2022, 3:39 AMHyeseong Kim
08/12/2022, 3:43 AMHyeseong Kim
08/12/2022, 3:44 AMHyeseong Kim
08/12/2022, 3:46 AMHyeseong Kim
08/12/2022, 4:25 AMGraphQL은 server to server 용으로 사용하기에는 적합하지 않다고 생각하시나요??깔끔하게 원 질문에 대한 답을 드리자면, 아니요 ㅎㅎ 다른 얘기는 대체로 근거가 빈약한 낭설이라 적당히 무시하고 직접 PoC 해보시는게 더 빠릅니다
XiNiHa
08/12/2022, 4:26 AMHyeseong Kim
08/12/2022, 4:27 AMHyeseong Kim
08/12/2022, 4:27 AMXiNiHa
08/12/2022, 4:28 AMXiNiHa
08/12/2022, 4:28 AMHyeseong Kim
08/12/2022, 4:29 AMXiNiHa
08/12/2022, 4:29 AMXiNiHa
08/12/2022, 4:29 AMmenmen
08/12/2022, 5:27 AMHyeseong Kim
08/12/2022, 5:59 AMmenmen
08/12/2022, 6:00 AMHyeseong Kim
08/12/2022, 6:00 AMHyeseong Kim
08/12/2022, 6:00 AMHyeseong Kim
08/12/2022, 6:00 AMHyeseong Kim
08/12/2022, 6:01 AMHyeseong Kim
08/12/2022, 6:02 AMTony Won
이 URL을 찌르면 이 GraphQL 오퍼레이션이 실행됩니다 식으로요저도 Persisted Query 생각났어요 ㅎㅎ
Hyeseong Kim
08/12/2022, 6:02 AMHyeseong Kim
08/12/2022, 6:02 AMmenmen
08/12/2022, 6:03 AMHyeseong Kim
08/12/2022, 6:03 AMHyeseong Kim
08/12/2022, 6:04 AMHyeseong Kim
08/12/2022, 6:05 AMAggregation이라기 보다는 저희팀 데이터(를 제공하는 API) 에 의존하는 타 시스템이 많다는 의미었습니다!
각 시스템에서 요구하는 API가 비슷하면서도 조금씩 다르기 때문에 각각의 요구사항을 다 들어주면서 API를 계속적으로 추가하다보니,
코드의 중복도 많고, 어떤 API가 여전히 쓰이고 있는지, 어떤 필드들이 쓰이고 있는지 이런것들이 시간이 지날수록 관리가 어려워지는 것 같아 GraphQL로 해소를 해보고자 생각을 해보았습니다!
이 상황을 해소하는데 GraphQL이 도움을 주느냐는 Yes 라는건데 클라이언트 측에서는 GraphQL의 형식이나 언어를 원치 않는다는거잖아요
Hyeseong Kim
08/12/2022, 6:05 AMmenmen
08/12/2022, 6:06 AMHyeseong Kim
08/12/2022, 6:06 AMXiNiHa
08/12/2022, 6:07 AMHyeseong Kim
08/12/2022, 6:07 AMHyeseong Kim
08/12/2022, 6:07 AMHyeseong Kim
08/12/2022, 6:09 AMHyeseong Kim
08/12/2022, 6:09 AMHyeseong Kim
08/12/2022, 6:10 AMmenmen
08/12/2022, 6:11 AMHyeseong Kim
08/12/2022, 6:11 AMHyeseong Kim
08/12/2022, 6:11 AM