반응형

전체 글 477

[Spring] @Transactional(readOnly=true)에서 write 시 예외 좀 더 살펴보기

개발하던 도중 아래 에러를 만났다. The MySQL server is running with the --read-only option so it cannot execute this statement 에러 발생 원인은 @Transactional(readOnly=true) 어노테이션이 붙어진 메서드에서 save 로직을 했기 때문이다. 근데 이 readOnly 옵션에 대해 의견이 분분했다. 그래서 이번 기회에 조금 더 살펴보려 한다. 코드 쪽을 쭉 살펴보면서 분석해봤으며, 혼자서 분석해본 것이라 틀린 내용이 포함될 수 있다. 결론부터 말하자면 아래와 같다. H2 DB는 readOnly 무시됨. (정말 유명한 사실이다.) MySQL, MariaDB는 readOnly 시 락 걸고, 여기에 위배되는 로직 작성 시..

[231223] 2023년 회고, 그리고 2024년 나의 계획

벌써 2023년이 끝나간다니, 믿을 수 없다. 아래 글을 썼던 게 얼마 전인 거 같은데 벌써 이 글을 쓴지 1년이 다돼간다. https://kth990303.tistory.com/404 [221214] 2022년 회고, 그리고 2023년 나의 계획 2022년 시작이 엊그제같은데, 벌써 2022년이 서서히 마무리되고 있다. 2022년에는 정말 많은 일들이 있었고 나도 그만큼 많이 성장할 수 있었다. 특히 지난 21년 8월쯤에 작성한 Diary 카테고리의 포스 kth990303.tistory.com 2023년은 정말 특별하기도 했고, 개인적으로 나한테 많은 변화가 있었던 해이다. 한번 적어보자~! 첫 직장, 첫 실무 2023년 7월, 나의 첫 직장생활을 시작했다. 관련해서 예전에 1개월차때 후기를 적은 적이..

[Spring] Amazon SNS, SQS 이벤트 순서 역전 및 유실에 대처해보자

타 서비스 간 통신을 위해 API Call 뿐 아니라, event 방식으로도 많이 이용한다. 특히, 강결합을 제외하고 싶을 때 + 서로간의 양방향 통신이 아닌, 특정 행위 발생 시 단방향으로 메시지를 보내고 싶을 때에 이벤트를 보내는 방식을 고려하게 된다. 이벤트를 보내는 방식은 다양하게 존재한다. 먼저, @EventListener를 이용하여 동일 서비스 내에서 보낸 이벤트를 받아 처리하는 방식이 있다. 이 방식은 이미 지난번에 작성한 포스팅이 존재한다. https://kth990303.tistory.com/441 [Spring] 이벤트 발행 및 @TransactionalEventListener을 이용한 의존성 줄이기 사이드 프로젝트에서 회원탈퇴 로직을 구현하는 백로그를 담당중이었다. 하지만 회원 탈퇴는..

[231115] 우아콘 2023 참여 후기

우아한형제들 주관 테크컨퍼런스인 WOOWACON 2023에 참여했다! https://woowacon.com/ WOOWACON 2023 한 번의 배달을 위해 필요한 모든 기술들 woowacon.com 정말 인기가 많았고 경쟁이 치열했다고 알고 있는 우아콘 2023. 확실히 사람들이 정말 많았다. 그리고 우테코, 우형 사람들이 정말 많았다...ㅋㅋ 이번 우아콘은 오프라인으로 열린다는 소식을 듣고 기대에 부푼 마음으로 참여해보았다. 사내에서 주최되는 행사이기도 하고, 사내 정책에 따라 컨퍼런스 참여는 근무시간으로 인정받을 수 있어서 팀원분이랑 함께 세션을 들으러 갔다. 굉장히 많은 세션들이 있었고, 나는 아래와 같이 세션을 들었다. 11:00 ~ 11:40 A-대규모 트랜잭션을 처리하는 배민 주문시스템 규모에..

[231104] KUPC 2023 참가 후기

건국대학교에서 교내 알고리즘 경진대회가 KUPC 2023이라는 이름으로 개최됐다! 나는 작년에 KUPC 2022를 개최하고 운영한 경험이 있다. 해당 경험에 대한 후기는 아래 블로그 포스팅으로 작성해놓았다. https://kth990303.tistory.com/400 [221203] KUPC 2022 출제 및 운영 후기 이 글은 문제에 대한 스포일러가 존재하지 않습니다. 단, 난이도 스포일러는 일부 존재합니다. 우리 학교 내에서 알고리즘 경진대회를 운영 및 출제해보았다! 그동안 알고리즘 대회를 주최하고 kth990303.tistory.com 하지만 2023년에는 PS 및 알고리즘 공부를 거의 하지 않고 백엔드 개발, 또는 회사일에 전념하곤 했다. 그래서 사실 이번 KUPC 2023은 참가할지 말지 고민을..

[231023] 흔한 백엔드 개발자 모임 컨퍼런스 후기

10월 23일 월요일에 개최된 `흔한 백엔드 개발자 모임` 컨퍼런스에 다녀왔다! https://festa.io/events/4028 흔한 백엔드 개발자 모임 | Festa! Festa에서 당신이 찾는 이벤트를 만나보세요. festa.io 알게 된 경로는 넥스터즈 단톡방이었다. 넥스터즈 활동이 끝난 이후에도 해당 톡방에는 채용공고 모집이나 컨퍼런스 홍보글이 올라오곤 한다. 이 세션은 넥스터즈에서 활동하신 분께서 주최하는 컨퍼런스여서 넥스터즈 단톡방에 홍보가 됐었는데, 꽤나 흥미로운 주제들이 많아보여서 참여신청을 눌렀다. ZGC는 JDK 17 버전에서 소개되는 GC 정도로만 알고 있었고, Virtual Thread와 Project Loom은 완전 최신에 오픈한 기술 정도로만 알고 있었다. 사실 내가 속한 사..

[231001] 올림픽대교 ~ 방화대교 (아라한강갑문 중간에서 포기) 라이딩 후기

(사진이 많다. 스압주의 / 데이터 주의!) 정말 오랜만에 라이딩 포스팅을 올리는 듯하다! 그동안 자전거 자체는 종종 탔지만, 출퇴근 용도로만 타거나 10~20km 정도만 타거나, 아니면 길게 탔다 하더라도 별도로 포스팅을 하지 않았다. 하지만, 이번에는 나름 중장거리 코스로 탔기 때문에 포스팅을 해보려 한다. 이번 추석연휴가 6일로 매우 길어서, 날잡고 자전거탈만한 시간이 나서 한번 타보았다. 아래 포스팅과 똑같은 코스로 갔다왔다. https://kth990303.tistory.com/402 [221207] 잠실철교 ~ 경기 방화대교 한강 자전거길 60km 라이딩 요즘 우아한테크코스가 끝나고, 편의점 저녁 아르바이트를 하면서 널널하게 시간 보내고 있다. 오전에는 시간이 비기 때문에, 한번 날잡고 자전거..

[Spring] @async 로직 실패 일대기, ThreadPoolTaskExecutor의 awaitTerminate와 Async

애플리케이션을 만들다보면 비동기 로직을 호출할 때가 상당히 많다. 별도의 스레드에서 돌아가면서 추후에 응답값을 반환해도 되는 경우, 성능 향상을 위해 비동기를 쓰는 것. 하지만 그렇기 때문에 결과를 예상하기가 더 어려워 의도치 않은 현상이 종종 발생하곤 한다. 이번에 발생한 문제는 아래와 같다. 스프링 애플리케이션 실행 해당 로직에는 비동기 로직을 호출 비동기 로직 수행 중, 스프링 애플리케이션 종료. 비동기 로직 중 일부 실패 스프링 애플리케이션이 비동기 async 로직을 다 수행하지 않았음에도 종료된 것이다. 참고로 보통 이런 문제는 애플리케이션 내 일반적인 로직 수행하는 경우보단, 스프링 배치를 수행할 때 발생할 수 있을 것으로 보인다. 보통 애플리케이션 서버를 직접 다운시키는 경우는 없을테니 말이..

[RDS] (적은 트래픽에서) t3.micro ~ t3.xlarge 성능 직접 업그레이드하며 비교해보기

우리는 트래픽이 몰릴 때, DB의 처리 능력 발휘를 위해 CPU를 올리고 데이터를 많이 관리하기 위해 Memory를 올린다. 실제로 트래픽이 많을 때 스펙업을 하면 CPU Utilization, Memory 점유율이 안정되는 것을 종종 확인할 수 있다. 그러다 문득 이런 생각이 들었다. 트래픽이 적을 때, 오래 걸리는 메서드를 수행하면 RDS 스펙마다 어느 정도 성능이 차이가 날까? 트래픽이 많다면 동시에 들어오는 요청이 많을테니 vCPU, Memory가 높은 것이 확실히 유리하긴 할 것이다. 그런데 트래픽이 적을 때 + 단순 반복이 많아서 좀 오래 걸리는 로직에도 유의미하게 차이가 있을까? 공식 문서(https://aws.amazon.com/ko/rds/instance-types/)에는 아래와 같이 안..

Infra/Aws 2023.09.22

[Docker Hub] toomanyrequests: You have reached your pull rate limit 에러 해결

CI를 돌릴 때 아래 에러가 뜨면서 실패할 수 있다. Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit Understanding Your Docker Hub Rate Limit | Docker Get a better understanding of your Docker Hub rate limit for container image pull requests, depending on usage type and subscriptio..

Infra/Docker 2023.09.22
반응형