본문 바로가기

분류 전체보기58

[Unit Testing] 4장 좋은 단위 테스트의 4대 요소 보호되어 있는 글 입니다. 2024. 8. 12.
[Unit Testing] 2장 단위테스트란 무엇인가? 단위테스트 : 생산성과 품질을 위한 단위테스트 원칙과 패턴 (블라디미르 코리코프 저)'2장_ 단위 테스트란 무엇인가' 부분을 읽고 정리한 내용입니다.모든 소스코드는 이곳에서 확인할 수 있습니다. 단위 테스트의 정의단위테스트는작은 코드 조각을 검증하고빠르게 수행하고격리된 방식으로 처리하는 자동화된 테스트이다.그렇다면, 이중 세 번째 "격리된 방식으로 처리하는" 부분에서의 격리는 정확히 무엇일까?고전파와 런던파의 주장에 대해 정리해보자.격리 문제에 대한 런던파의 접근런던파에서 주장한 "격리"는 테스트 대상 시스템을 협력자에게서 격리하는 것을 일컫는다.즉, 하나의 클래스가 다른 클래스 또는 여러 클래스에 의존하면 이 모든 의존성을 테스트 대역으로 대체해야 한다는 것이다.  이 방식의 이점테스트가 실패하면 코드.. 2024. 8. 4.
[Spring Data DynamoDB] Type Error 해결하기 ‐ @DynamoDBTyped 문제 상황데이터 저장과정에서 다음과 같은 에러가 발생하였습니다.데이터 attribute의 타입을 정확하게 지정해주지 않아, 저장과정에서 타입 에러가 나고 있었던 것 같습니다.not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted: com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException 저장하고자 했던 Entity 코드입니다. followingUserHandles와 followerUserHandles 저장과정에서 에러가 발생하고 있었습니다.public class User extends BaseEntity { ... @DynamoDBAttribute @Gett.. 2024. 8. 3.
[Spring Data DynamoDB] LocalDateTime 저장 에러 문제 상황LocalDateTime을 DynamoDB에 저장하려고 했으나, 다음과 같은 에러가 발생하였습니다.InvalidDefinitionException: Joda date/time type `org.joda.time.LocalDateTime` not supported by default 해결 과정LocalDateTime parsing 에러로 추측하였으며,직접 LocalDateTime을 바꿔주는 Custom Converter를 작성하여 해당 에러를 해결해 줄 수 있었습니다. public static class LocalDateTimeConverter implements DynamoDBTypeConverter { @Override public Date convert(LocalDateTime s.. 2024. 8. 3.
[Spring Data DynamoDB] Partition Key와 Sort Key를 같이 사용할 때 문제 상황POCHAK은 원테이블 설계로, Partition Key와 Sort Key를 모두 사용하여 설계하였습니다.하지만 Spring Data DynamoDB와 연결하는 과정에서 BeanCreationException이 발생하였습니다. 이를 해결하기 위해 알아보는 과정에서 Partition Key와 Sort Key를 같이 사용하는 경우, CrudRepository를 사용할 때 PK와 SK를 조합한 Id 클래스가 따로 있어야 한다는 점을 알게되고 에러를 해결한 과정을 정리합니다 ~.~문제 해결 과정UserId ClassUserId 클래스를 다음과 같이 설정합니다. User에서 설정한 PK와 SK의 조합으로 이루어집니다.유의할 점은 UserId 클래스는 Serializable을 구현implements해야 합.. 2024. 8. 3.
[Spring Data DynamoDB] 페이징 정리 'POCHAK'을 개발하며 Spring Data DynamoDB를 사용해보았고,그 과정에서 새롭게 알게 된 점을 정리한 글입니다.※ 이후 포착은 서비스 특성상 데이터베이스를 DynamoDB에서 MySQL로 변경 후 다시 개발하였습니다.- Spirng Data DynamoDB 라이브러리- POCHAK GitHub Repository DDB에서 페이징이 필요한 이유공식 문서에도 언급되어 있지만, DynamoDB의 단일 쿼리 작업은 최대 1MB의 데이터만 가져올 수 있습니다. 그렇기에 우리 어플리케이션에서 프로필 탭에서 자신이 찍힌 게시글과 찍은 게시글을 조회할 때 다음과 같은 페이징이 필요하다고 판단하여 리팩토링을 진행하게 되었습니다!물론 성능 측면도 고려해보았을 때, 페이징은 언젠가 해야되리라 생각하고 있.. 2024. 8. 3.
[Spring Data DynamoDB] 쿼리 작업 정리 'POCHAK'을 개발하며 Spring Data DynamoDB를 사용해보았고,그 과정에서 새롭게 알게 된 점을 정리한 글입니다.※ 이후 포착은 서비스 특성상 데이터베이스를 DynamoDB에서 MySQL로 변경 후 다시 개발하였습니다.- Spirng Data DynamoDB 라이브러리- POCHAK GitHub Repository Query구현 목표KeyConditionExpression 작동 확인하기PK가 동일하고 SK가 USER#로 시작하는 데이터를 전부 가져오기:.withKeyConditionExpression("#PK = :val1 and begins_with(#SK, :val2)")예시 코드PK, SK의 이름과, 각각 비교할 값들을 HashMap에 저장시킴.DynamoDBQueryExperess.. 2024. 8. 3.