[개발일지] 230706 Java BiFunction 인터페이스
·
성장이야기/TIL
새로운 메서드를 추가하는데 기존에 존재하는 코드와 중복되는 부분이 많아 코드를 재사용하기 위해 BiFunction이라는 것을 사용할 수 있다는 것을 알게 되었다. 그래서 오늘은 BiFunction에 대해 알아보려고 한다. BiFunction BiFunction은 Java 8에서 도입된 함수형 인터페이스 중 하나로, 두 개의 입력을 받아 결과를 반환하는 함수를 모델링합니다. BiFunction 인터페이스 인터페이스에서 T와 U는 함수의 입력 타입이고, R은 반환 타입이다. BiFunction을 사용하는 간단한 예제 코드를 살펴보자. BiFunction biFunction = (x, y) -> x + y; String biFunctionResult = biFunction.apply("Hello", " Wor..
[개발일지] 230629 Spring WebFlux란? (with. Reactive programming)
·
성장이야기/TIL
오늘은 기존에 작성되어 있던 코드에서 별도의 프로젝트 모듈을 만들어서 분리하는 작업을 했다. 프로젝트 세팅하고 코드만 옮기면(ctrl c + ctrl v만 하면 되는 줄..) 되는 간단한 문제인 줄 알았는데 생각보다 변경되어야 할 점이 많아 시간을 많이 잡아먹었다.. 우선 기존 프로젝트는 Quarkus라는 프레임워크를 이용해 AppSync를 통해 실시간 데이터를 전송하고 있던 프로젝트였는데 분리해서 만들어야하는 프로젝트는 Quarkus 프레임워크가 아닌 Spring 프레임워크를 이용해서 새로운 프로젝트를 세팅해야 했다. Spring 프로젝트를 만들어서 코드를 옮기는데 Quarkus에만 존재하는 어노테이션들이나 기능들이 있어서 Spring으로 마이그레이션하는데 찾느라 시간을 많이 잡아먹었던 것이었다. 그중..
[개발일지] 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..
[개발일지] 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..