[개발일지] 230623 AWS DynamoDB Partition Key와 Sort key
·
성장이야기/TIL
DynamoDB DynamoDB는 AWS에서 제공하는 완전관리형 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공한다. DynamoDB의 특징으로 완전관리형 NoSQL DB라는 점과 뛰어난 확장성이 있다. 완전 관리형: 인프라 관리, 백업과 복원 등등 이러한 여러 가지 작업들을 모두 AWS가 자동으로 처리해 주는 것을 말한다. 확장성: DynamoDB는 수 백만 개의 요청을 초당 처리하고 테라바이트 이상의 데이터를 저장할 수 있다고 한다. DynamoDB는 두 가지 종류의 기본 키(primary key)를 지원하는데 오늘은 이 두 가지 키에 대해 공부했다. Partition key partiotion key는 한가지 속성으로 구성된 기본키(primary key)를 의..
[개발일지] 230620 GraphQL과 AppSync를 이용해 실시간 데이터 전송 (With Redis)
·
성장이야기/TIL
며칠 전 회사에서 단순 API 기능 개발을 하고 있던 나에게 실시간 관련 기능에 필요한 간단한 실시간 파이프 라인을 한번 구축해 보는 게 어떻겠냐고 제의를 해주셔서 아무것도 모르지만 일단은 해보겠다고 했다. (오랜만에 새로운 기술을 접한다는 사실에 설렜었다..) 그래서 약 일주일 좀 넘게 GraphQL, AppSync, Amplify, Quarkus 등등 새로운 기술을 많이 접하고 공부를 했다. 이해 안 되는 부분들(특히나 GraphQL, AppSync, Amplify 이 세 개의 전체적인 상관관계를 파악하는 게 힘들었다.)은 물어보면서 최대한 이해하려고 했다. 하지만 아직은 저것들을 누군가에게 설명할 수 있을 정도로 공부한 건 아니지만 기초적인 개념과 사용법 정도는 익힌 것 같다. 그래서 오늘은 지금까..
[개발일지] 230616 Quarkus Redis WRONGTYPE Operation against a key holding the wrong kind of value
·
성장이야기/TIL
Quarkus Redis 문제해결에 시간을 많이 사용한 하루였다. 문제 상황은 아래와 같다. 기존 redis에 key에 대응되는 하나의 value값을 String 타입으로 저장하고 있었늗네 이 key값(동일한 key)의 value를 3개 저장해야 했다. 그래서 데이터 타입을 hash로 변경해서 redis에 데이터를 저장을 하려고 했다. 기존에 작성된 코드 부분을 살펴보니 ValueCommands를 구현해서 String 값을 저장하고 있음을 알 수 있었다. 그래서 hash값을 저장하기 위해서 RedisCommands에 대해 알아보니 ValueCommands로 구현되어있던 부분을 hash 자료구조로 저장하기 위해서는 HashCommands로 변경하면 된다고 나와있었다. HashCommands 위와 같이 각 ..
[개발일지] 230614 Amplify GraphQL
·
성장이야기/TIL
Amplify Data modeling Amplify는 GraphQL 스키마에서 @model 지시어로 주석이 달린 GraphQL 유형에 대한 DynamoDB 데이터베이스 테이블을 자동으로 생성한다. 그리고 @model은 ID 필드를 데이터베이스 테이블에 primaryKey로 자동으로 추가한다. 아래는 Todo에 대한 간단한 GraphQL 스키마이다. type Todo @model { content: String } 위 예제의 GraphQL 스키마는 'Todo'에 대한 데이터베이스 테이블을 자동으로 생성한다. Amplify CLI는 “amplify push"를 하면 Todo 데이터베이스 테이블을 생성하고 Todo 모델에 대한 Create, Read, Update, Delete 및 list operation..
[개발일지] 230613 GraphQL Mutation
·
성장이야기/TIL
GraphQL은 데이터를 읽어오는데 사용되는 "query", 데이터를 변경하는데 사용되는 "mutation", 실시간으로 변경사항을 감지하는 "subscription" 이렇게 세 가지 유형의 쿼리가 존재한다. 오늘은 그 중 데이터를 변경할때 사용하는 mutation에 대해 알아봤다. Mutation REST에서 데이터 수정을 위해 GET요청을 사용하지 않는것 처럼 GraphQL도 데이터 변경을 발생시키는 작업은 명시적으로 mutation을 통해 전송되어야 한다는 규칙을 정하는 것이 좋다. mutation의 스키마 정의하는것은 "query"와 다를게 없다. 아래 예제 코드를 보면 스키마 형태가 query에서 mutation으로 변경된것 뿐이다. mutation CreateReviewForEpisode($e..
[개발일지] 230609 GraphQL을 알아보자 (GraphQL과 REST API)
·
성장이야기/TIL
GraphQL이란? GraphQL은 간단하게 말하면 데이터 쿼리 언어이다. 페이스북(메타)에서 만든 쿼리 언어로 REST API와 다르게 클라이언트가 필요한 데이터의 구조를 명시할 수 있어 클라이언트가 필요한 데이터만 얻을 수 있다는 특징이 있다. GraphQL을 이용하면 여러 번 데이터를 요청하거나 과도한 데이터 요청을 최소화할 수 있어 효율적인 네트워크 사용이 가능해진다. 다시말해 GraphQL은 클라이언트-서버 간 통신에서 사용되며, 이는 일반적으로 웹 또는 앱에서 데이터를 가져오는 데 사용된다. GraphQL의 목적과 특징 GraphQL의 주요 목적은 클라이언트 사이드에서 효율적이고 유연하게 데이터를 가져오는 것이다. 이를 통해 네트워크 사용량을 줄이고 애플리케이션의 성능을 향상시킬 수 있다. 1..