Auto-Increment(    @GeneratedValue(strategy = GenerationType.IDENTITY))를 위한 DB 수정
Software Development/Trial-and-error2024. 2. 16. 23:59Auto-Increment( @GeneratedValue(strategy = GenerationType.IDENTITY))를 위한 DB 수정

더미데이터 위에도 회원가입이 가능해야 하는데, 초창기 엔티티를 만들 때 미처 고려해주지 못했다. 이를 위해 단순히 @GeneratedValue(strategy = GenerationType.IDENTITY) 만 붙여줬는데, DB에 반영되지 않는 문제가 있었다. 수정 이후라 잘 반영되어 있지만, Auto Increment에 체크를 해줘도 다른 테이블과 제약조건이 걸린 탓에 반영이 안되는 상황. 이를 위해, 잠시 DB의 외래 키 제약조건을 비활성화 하고, 다시 활성화 해주는 작업이 필요했다. SET foreign_key_checks = 0; alter table member modify id bigint auto_increment; alter table member auto_increment = 1; SET..

비동기 메서드 테스트 코드 작성 시, DB 관련 유의점.
Software Development/Trial-and-error2024. 2. 5. 17:37비동기 메서드 테스트 코드 작성 시, DB 관련 유의점.

https://20180913.tistory.com/70 [Java Spring] 비동기 메서드에 대한 테스트코드 작성법 @SpringBootTest @ActiveProfiles("api-test") public class ActionServiceTest { @Autowired private ActionApiRepository actionApiRepository; @Autowired private ActionService actionService; // ThreadPoolTaskExecutor 빈을 생성하여, 비동기로 실행되 20180913.tistory.com @Async 어노테이션이 붙은 비동기 메서드로 DB에 데이터를 생성 혹은 삭제하는 메서드가 있었다. 이걸 테스트를 하는데, 하나의 클래스 안에서..

Software Development/Trial-and-error2024. 2. 1. 20:35[Java Spring] 비동기 메서드에 대한 테스트코드 작성법

@SpringBootTest @ActiveProfiles("api-test") public class ActionServiceTest { @Autowired private ActionApiRepository actionApiRepository; @Autowired private ActionService actionService; // ThreadPoolTaskExecutor 빈을 생성하여, 비동기로 실행되는 메소드가 실행되기 전에 테스트가 종료되는 것을 방지한다. @Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; @Test public void testWhenFollowAction() throws InterruptedException {..

Software Development/Trial-and-error2024. 1. 29. 17:57테스트 코드를 작성하며 겪는 시행착오들

부끄럽지만, 오늘 테스트 코드를 작성하며 겪었던 황당한 실수들을 정리해보고자 한다. 1. Repository 불러올 때 @Autowired 빼먹기 @Autowired private PostCommentApiRepository postCommentApiRepository; .... 2. 연관관계에 있는 Repository 초기화 깜빡하기... @OneToMany 등의 연관관계가 명시되어 있는 Repo들은, 반드시 초기화 해줘야 한다. 추가로, A는 B와, B는 C와 연관관계가 있고, C에 대한 Repo 테스트코드를 작성하고자 한다면? 마찬가지로, A, B, C 모두 불러와야 한다. 반대로, 의존관계를 따로 설정해주지 않았을 경우 다른 레포를 초기화 해줄 필요는 없다. 3. @BeforeEach, @Befo..

Software Development/Trial-and-error2024. 1. 29. 17:45InvalidDataAccessResourceUsageException: could not prepare statement; SQL

문제 상황 특정 테이블을 만들고, 테스트코드를 작성 및 실행하던 도중(Repository 테스트) org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [insert into post_comment (id, created_by, created_dt, deleted, updated_by, updated_dt, version, content, hate_count, like_count, parent_comment_id, pinned, post_id, reply_count, user_id) values (default, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?..

[Spring]  Error creating bean with name 'jwtService': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jwt.secretKey' in value "${jwt.secretKey}"
Software Development/Trial-and-error2024. 1. 27. 21:28[Spring] Error creating bean with name 'jwtService': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jwt.secretKey' in value "${jwt.secretKey}"

황당하게 Bean 주입이 안된다는 메시지가 자꾸 발생했다. https://oingdaddy.tistory.com/235 Spring properties 사용시 UnsatisfiedDependencyException: Could not resolve placeholder 오류 조치 Spring을 사용하면서 외부 설정 파일(properties or yml)은 필수적으로 사용된다. 하지만 이를 읽어오지 못하는 문제는 자주 직면하게 된다. 예를 들면 다음과 같은 오류다. org.springframework.beans.factory.Uns oingdaddy.tistory.com 해당 블로그를 통해 맥락을 짚을 수 있었는데, application.yml 을 통해 모든 외부설정을 관리하지 않고, application..

Software Development/Architecture2024. 1. 25. 12:58MSA에 대한 여러 생각들

MSA로 전환할 여지가 있는 서비스 개발에 참여하면서, 매일 점심때 우아콘 및 빅테크 기업들의 아키텍처를 강제시청 하고 있다. 무분별한 도입보다는, 서비스의 특성에 맞는지 충분히 고려하고 도입하는게 알맞다는 생각이 든다. 대표적인 장점으로는, - 확장에 부담이 적다. - 한 쪽에서 장애가 발생해도, 전체에 영향을 미치지 않는다. - 작은 단위로 개발하고 배포하므로, 협업에 유리할듯?(내 생각) 단점으로는, - 복잡하다. 통신도 복잡하고, - 관리가 어렵다. - 데이터 일관성 유지 문제? 정도가 있겠다. 일단 여기까지.

[문제 해결] Node.js sharp 이용, Crop 후 합성 문제
Software Development/Trial-and-error2024. 1. 12. 15:33[문제 해결] Node.js sharp 이용, Crop 후 합성 문제

AWS Lambda에서 돌아갈 이미지 크롭 API 수정을 맡게 되었다. 로직은 다음과 같았다. 1. 먼저 Image를 받아온 후, 1080으로 변환한다. 2. 사용자가 Screen 안에서 이미지를 재배치 한 것(확대/축소, 상하좌우 이동)을, Resize 한 후 Crop한다. 3. Crop 한 Image를, 검은색 여백 페이지와 합친다. 이 때 받게되는 정보는, resizedImage, offset 이고, resizedImage에서 offset은 계산되어 넘어오기 때문에, offset을 추가로 계산할 필요는 없다. 검은색 여백 페이지와 합칠 때, top, left를 offset과 resizedImage를 활용해 계산하는 것이 문제였다. 기존에 작성된 Crop에 문제는 없었고, processImage 부분..

Software Development2024. 1. 11. 13:55AWS 환경: 설정과 이해

💡 이 대화는 클라우드 서비스, 특히 AWS와 관련된 다양한 개념과 서비스 설정에 대한 자세한 설명을 담고 있습니다. 주요 내용을 요약하면 다음과 같습니다: 클라우드 서비스 기초: 인터넷 연결과 네트워크 환경의 중요성에 대한 설명. VPC(Virtual Private Cloud) 설정과 그 중요성에 대한 논의. AWS 서비스의 기본적인 지식과 구성 요소에 대한 설명. AWS 서비스 구성: VPC 생성 및 설정에 관한 자세한 논의. 서브넷, 라우팅 테이블, 네트워크 연결 등의 구성 요소에 대한 설명. AWS 서비스에서의 보안 그룹 설정과 포트 관리에 대한 논의. ECS(Elastic Container Service)와 ECR(Elastic Container Registry) 활용: ECS 클러스터 생성 및..

Software Development/Infra2024. 1. 8. 14:26Aurora DB, Redis, Cache 이해하기

Aurora DB 이해하기 Amazon Aurora Amazon RDS(관계형 DB)의 일부이다. 기본적으로 MySQL, PostgreSQL과 호환되는 RDBMS 엔진. MySQL, PostgreSQL 데이터베이스에 사용되는 코드, 도구 모두 그대로 사용 가능. MySQL 기준으로 5배의 속도를 제공한다. Redis Remote Dictionary(key-value) Server 기본적으로 캐시에 대해 이해할 필요가 있다. 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 인메모리 데이터 구조 저장소 Redis는 데이터베이스,캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이선스), 인메모리 데이터 구조 저장소 입니다. Redis는 문자열 , 해시 , 목록 , 집합..

image