[개발일지] 230628 AWS DynamoDB Partition
·
성장이야기/TIL
Partition DynamoDB는 테이블을 생성할 때 partition key와 선택적으로 sort key를 지정할 수 있다. DynamoDB는 방금 생성해준 partition key를 기반으로 자동으로 partition(DynamoDB 내부의 물리적 저장소)이라는 물리적 저장 공간을 생성하는데 하나의 partition key는 하나의 partition에만 할당할 수 있다. 하지만 partition에 데이터가 많아질수록 DynamoDB는 partition을 자동으로 분할하여 더 많은 저장 공간을 제공하고 처리량을 늘린다. DynamoDB는 같은 partition key를 가진 item들을 같은 partition에 저장되도록 설계되어 있기 때문에 같은 partition key를 가진 item을 다른 pa..
[개발일지] 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 이 세 개의 전체적인 상관관계를 파악하는 게 힘들었다.)은 물어보면서 최대한 이해하려고 했다. 하지만 아직은 저것들을 누군가에게 설명할 수 있을 정도로 공부한 건 아니지만 기초적인 개념과 사용법 정도는 익힌 것 같다. 그래서 오늘은 지금까..
Blocking, Non-Blocking I/O
·
OS
오늘은 Quarkus Reactive에 대해 알아보다 Non-blocking I/O에 대한 개념을 모르고 있다는 느낌이 들어 간단하게 I/O에 대해 공부하고 정리해 봤다. I/O란?데이터의 입력(Input)과 출력(Output)을 함께 일컫는 말로 컴퓨터에서 데이터를 주고받는 과정을 말한다.여기서 말하는 데이터는 사용자로부터의 입력, 네트워크 통신을 통해 전송되는 데이터, 파일에 쓰는 데이터 등 다양한 형태를 가질 수 있다. Blocking I/OI/O 작업이 진행되는 동안 프로세스는 자신의 작업을 중단한 채 완료될때 까지 대기하는 방식이다. Blocking I/O는 작업이 완료될 때까지 프로그램이 중단되기 때문에 자원을 비효율적으로 사용한다는 단점이 존재한다. Non-Blocking I/OI/O 작업..
[개발일지] 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..