전체 글
-
GraphQL에 대하여 ( Resolver & Dataloader / Aliases & Fragment)Graphql 2023. 6. 3. 12:11
2023.05.07 - [Graphql] - GraphQL에 대하여 (Interface & Union Type) GraphQL에 대하여 (Interface & Union Type) 2023.04.23 - [Graphql] - GraphQL (Schema & Type) 에 이어서 interface & union type에 대해 설명하고자 한다. Interface 다른 많은 타입 시스템처럼 GraphQL은 interface를 지원한다. 인터페이스는 Type이 무엇 인가를 구현 zzihyeon.tistory.com 에 이어서 포스팅 하고자 한다. Resolver GraphQL에서 Resolver는 쿼리의 각 필드에 대한 데이터를 제공하는 함수이다. Resolver는 GraphQL 서버에서 데이터를 가져오는 데..
-
GraphQL에 대하여 (Interface & Union Type)Graphql 2023. 5. 7. 00:59
2023.04.23 - [Graphql] - GraphQL (Schema & Type) 에 이어서 interface & union type에 대해 설명하고자 한다. Interface 다른 많은 타입 시스템처럼 GraphQL은 interface를 지원한다. 인터페이스는 Type이 무엇 인가를 구현하기 위해 포함해야 하는 특정 필드 집합을 포함하는 추상 Type입니다. 이 말로는 어려울 수 있으니 계속 사용하던 User를 이용해 예제를 만들어 확인해보도록 하자. 예를 들어, 쇼핑몰 시스템의 User에 Admin, Seller, Buyer 3가지 종류가 있고 아래와 같은 의미를 지닌다고 생각하자 Admin: 시스템을 관리하는 User Seller: 판매를 위해 상품을 등록하고 정산을 받는 User Buyer:..
-
GraphQL (Schema & Type)Graphql 2023. 4. 23. 11:06
2023.04.16 - [Graphql] - GraphQL이란에 이어서 GraphQL에 대해 더 알아보도록 하겠다. 지금까지는 Rest API를 대체할 수 있는 무언가가 있고 그게 GraphQL이 될 수 있다 까지 생각할 수 있다. 지난 글에서는 아래와 같이 GraphQL에 대한 두 가지 장점이 있었다. Schema를 정해 데이터의 일관성을 보장할 수 있다. Client에서 필요한 data만을 요청하기에 overfetching을 줄일 수 있다. 그럼 이제부터 GraphQL에 대해 더 자세히 알아보도록 하자. Schema & Type 우선 설명에 앞서 아래와 같은 User에 대한 예시 Shema을 작성하겠다. #user.graphqls #enum type 선언 enum Gender { MALE FEMALE..
-
GraphQL이란Graphql 2023. 4. 16. 22:19
GraphQL이란 GraphQL은 Facebook에서 개발된 오픈소스 기술로 데이터 질의 (Query + Schema) 언어이다. 클라이언트는 GraphQL 서버로 쿼리를 전송하고, 서버는 해당 쿼리를 해석하고 데이터를 반환한다. 이 때, 클라이언트가 요청한 필드만 반환되므로 over fetching을 줄여 효율적이다. 또한, GraphQL은 스키마를 사용하여 데이터 모델을 정의하기 때문에 클라이언트와 서버 간의 일관성 있는 데이터 통신을 보장한다. 이를 통해 클라이언트가 서버가 제공하는 데이터 중 원하는 데이터를 가져오는 것이 가능해집니다. GraphQL vs Rest API Rest API는 HTTP 요청방식 (GET, POST, PUT DELETE 등)을 사용하여 데이터를 요청하고 응답받는다. 이 ..
-
[AWS] AutoScaling 설정하기Server management 2023. 3. 11. 23:09
기존에 EC2 총 세개 (server, db1, db2)로 사용하던 서버를 확장성 있는 인프라 구축을 위해 AutoScaling 설정을 진행했고 과정을 기록하고자 한다. 고려사항은 아래와 같다. auto scaling을 위해 EC2가 생성됨과 동시에 내가 원하는 docker image를 다운받아서 실행하는 설정이 필요하다. ec2의 user data 를 사용함으로써 해결했다. 2개의 port를 사용하기 때문에 이에 대한 처리가 필요하다. Load Balancer의 target group을 두개로 나누어서 해결했다. EC2 Template 생성하기 우선 Template을 생성해야 한다. 내가 이해한 Template는 EC2를 생성하기 쉽게 내가 자주 쓰는 설정을 미리 Setting해 놓고 이를 불러와서 E..
-
Golang Gin API Swagger 붙이기Golang 2022. 12. 16. 05:06
https://github.com/swaggo/swag#api-operation GitHub - swaggo/swag: Automatically generate RESTful API documentation with Swagger 2.0 for Go. Automatically generate RESTful API documentation with Swagger 2.0 for Go. - GitHub - swaggo/swag: Automatically generate RESTful API documentation with Swagger 2.0 for Go. github.com 계기 보통 GraphQL을 기본 api로 사용하고 있기 때문에 swagger에 필요성을 느끼지 못하고 있었는데 최근 다른 외부 서비스..
-
DataLoaderGraphql 2022. 10. 9. 13:50
기본적으로 graphQL에 대해 어느정도 알고 있다고 생각하고 작성하겠다. DataLoader란 graphQL에서 Resolver를 사용할 때 N+1 문제가 생긴다. N+1 문제란 요청은 한번만 했지만 Resolver에 의해 N번의 트랜젝션이 발생할 수 있는 것이다. 예를 들면, user, purchase, stuff 이 3개의 table이 있다고 가정해보고 gql 타입을 아래와 같이 정의했다고 가정하자. type User { id: String! name: String! email: String! purchases: [Purchase] # purchase를 조회하기 위한 Resolver가 있음 } type Purchase { id: String! total_price: Int! date: Time! s..
-
Golang에서 SMTP 로 mail 보내기 (gmail)Golang 2022. 9. 4. 18:24
App 사용을 위한 계정 생성하기 기존에는 google 로그인 시 사용하던 id / pwd로 mail을 보낼 수 있었지만 보안 정책이 변경되어 app 계정을 따로 생성해야 한다. 이제 smtp 계정을 설정할 때 내 mail주소와 화면에 나온 app 비밀번호를 사용하면 된다. code 작성 package gomail import ( "bytes" "encoding/json" "errors" "fmt" "html/template" "io/ioutil" "log" "net/smtp" "os" "path/filepath" ) func SendEmailSMTP(to []string, data interface{}, template string) (bool, error) { type credential struct..