본문 바로가기

전체 글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.
GCP, Jenkins + Docker로 Spring Boot CI/CD 구축하기 GDSC Solution Challenge에 도전하면서, 처음 GCP를 사용하게 되었다!기존 스프링부트 앱을 개발할 때 보통 AWS의 CodeDeploy (+ S3, EC2)를 활용하여 CI/CD를 구축하였는데, 이번엔 GCP도 사용해볼겸, 새로운 툴인 Jenkins를 통하여 CI/CD를 구축하는 방법에 대해 알아본 내용을 정리해보았다. 과정 정리[GCP] Compute Engine 설정세팅 정보서버는 스프링부트용 서버, 젠킨스용 서버 총 2개를 세팅해주었다.ubuntuhttp/https 트래픽 허용 (미리 8080 - 9090 포트를 열어줌.)서버remine-springboot-server [스프링부트용 서버]remine-jenkins-server [젠킨스용 서버] 외부 고정 주소 예약VPC 네트워크 .. 2024. 6. 22.
[JPA] 영속화 순서 변경 - Dirty Checking과 @DynamicUpdate 사용 Dirty Checking과 관련된 내용을 복습하며 영속화 순서에 대해 궁금했던 것들, 그리고 실험했던 기록을 작성합니다. 강의 내용Parent Entity와 Child Entity가 1:N으로 연관관계가 맺어져 있음. (따라서 연관관계의 주인은 Child Entity.)이 상태에서 아래 코드를 실행시킬 경우, Child child1 = new Child();child1.setName("child1");Child child2 = new Child();child2.setName("child1");Parent parent = new Parent();parent.setName("Parent1");parent.addChild(child1);parent.addChild(child2);em.persist(paren.. 2024. 6. 7.
[MLSA] "Power Automate로 업무 자동화하기" : HANDS-ON 사전에 Teams로 미리 첨부해둔 Word 파일입니다.핸즈온에서 사용되는 파일이니, 이 글을 읽고 따라해주실 분들은 아래 파일을 다운받아 실습을 진행해주시면 됩니다.🤔 핸즈온 시나리오동아리 운영진 업무 자동화하기수십개의 지원서를 엑셀 파일로 확인해야 하는 상황에서,각 지원서를 PDF 문서로 한 장씩 깔끔하게 만들어서 확인해보자! 🤝 운영진들의 사전 준비여기 "운영진들의 사전 준비" 부분은 세션에서는 사전에 미리 운영진들이 준비해두었던 부분이지만,혹시 다른 Teams (작업 환경)에서 이번 세션 핸즈온을 따라하고 싶으신 분들을 위해 준비한 부분입니다.지원서 원본 파일을 Teams에 넣어두기Teams의 파일 탭에서는 다음과 같이 파일을 드래그 앤 드랍으로 바로 업로드할 수 있습니다.위에 있는 지원서_원본.. 2024. 4. 8.