반응형

전체 글 477

[JPA] unique 동시성 이슈 해결 및 CountDownLatch 테스트 작성 (Feat. Unique Index)

사이드 프로젝트를 하면서 동시성 이슈를 만났다. 모바일 프론트 측에서 api 테스트를 하다가, 즐겨찾기 엔티티가 연달아 두 번 등록되는 이슈가 있었던 것이다. 그리고 즐겨찾기 엔티티는 repository에서 Optional과 같은 꼴로 반환되게 했기 때문에, 두 개 이상의 결과가 반환되면 NonUniqueResultException 가 발생한다. 이러한 동시성 이슈가 발생하는 데에는, 두 스레드가 거의 동시에 진행됐기 때문이다. 사실 트래픽이 조금이라도 많으면 이러한 동시성 이슈는 흔히 만날 수 있다. nGrinder로 save 관련 메서드에 수십개의 스레드로 테스트를 돌려보자. 아래 사진은 nGrinder로 회원가입 메서드를 수십개의 스레드로 5초동안 실행시킨 결과이다. 원래대로라면 같은 이메일, 같은..

[Spring] Elasticache Redis 캐싱과 테스트 코드를 이용한 성능 개선

해당 글에서는 aws Elasticache for Redis로 캐시 데이터를 이용한 성능 개선, Spring Boot + Lettuce Redis + JUnit5 프로덕션 + 테스트 코드에 대해 다룹니다. 사이드 프로젝트 `모카콩`의 Wiki에 작성한 글에 해당된다. 해당 프로젝트 github: https://github.com/mocacong/Mocacong-Backend GitHub - mocacong/Mocacong-Backend: 모카콩 백엔드 모카콩 백엔드. Contribute to mocacong/Mocacong-Backend development by creating an account on GitHub. github.com 들어가며 모카콩에는 수많은 카페 데이터들이 존재합니다. 전국의 카페..

[AWS] 1달간의 SES 샌드박스 계정 탈출일지

AWS에는 클라우드 기반으로 이메일 서비스를 이용할 수 있게 하는 Simple Email Service(이하 SES)가 존재한다. 하지만 SES 설정 초기에는 샌드박스 계정에 있다면서 경고를 띄워준다. 샌드박스 계정이란, 일일 이메일 건수 200건 및 AWS SES에 자격 증명이 된 이메일로만 메일을 보낼 수 있는 계정을 의미한다. 다시 말해, 샌드박스 계정으로는 이메일 인증을 거치지 않은 타 이메일로 메일 전송이 불가능하다는 것이다. 그렇다고 앱에 회원가입한 사람들한테 매번 aws 이메일 인증을 부탁하는 것도 웃긴 일이다. 그렇기 때문에 aws SES 샌드박스 계정 탈출을 신청했으나... 1번은 거절당했고, 다른 1번은 무려 2주의 시간을 들여 겨우겨우 Sandbox 계정에서 벗어날 수 있었다. 이번 ..

Infra/Aws 2023.05.23

[Infra] AWS SNS+Chatbot로 슬랙 알림받기(Feat. AWS Budgets)

해당 글에서는 AWS SNS, Chatbot를 이용하여 슬랙에 알림을 보내는 방법에 대해 다룹니다. AWS Budgets의 구체적인 설정 방법은 생략합니다. 사이드 프로젝트 `모카콩`의 Wiki에 작성한 글에 해당된다. 해당 프로젝트 github: https://github.com/mocacong/Mocacong-Backend GitHub - mocacong/Mocacong-Backend: 모카콩 백엔드 모카콩 백엔드. Contribute to mocacong/Mocacong-Backend development by creating an account on GitHub. github.com 들어가며 모카콩에는 특정 트리거 조건 시에 보내주는 슬랙 알림이 여럿 존재합니다. 이번에는 그 중, 두 가지 알림에..

Infra/Aws 2023.05.22

[Infra] 와이어샤크로 tcpdump 파일 분석하여 AWS ALB idle timeout 설정하기

SRE 분야에 대해 공부하던 중, timeout 원인을 찾는 과정에서 네트워크 레이어부터 분석하는 경우가 많다는 것을 느꼈다. 실제로 내가 현재 진행하고 있는 사이드 프로젝트에서 모니터링 및 장애대응 업무를 주로 맡고 있기 때문에 해당 내용에 관심이 생기기 시작했다. 아직까지 규모가 작기 때문에 504 Gateway time-out이 뜬 경험은 거의 없어서 네트워크 패킷까지 뜯어볼 일은 없었다. 이번 기회에 한 번 뜯어보면 언젠가 도움이 되지 않을까 하여 뜯어보기로 결정했다. 참고) 해당 포스팅은 개인 학습기록이므로 틀린 내용이 존재할 수 있습니다. 틀린 내용을 혹시 발견하셨다면 댓글 부탁드립니다. ubuntu에서 tcpdump 캡처하는 방법 1. 우분투 서버에 접속한다. ssh -i {pem KEY} ..

Infra/Aws 2023.05.15

[Infra] nGrinder 성능 테스트 입문일지 (스크립트 추가)

해당 글에서는 nGrinder를 이용한 성능테스트 방법에 대해 다룹니다. 사이드 프로젝트 `모카콩`의 Wiki에 작성한 글에 해당된다. 해당 프로젝트 github: https://github.com/mocacong/Mocacong-Backend GitHub - mocacong/Mocacong-Backend: 모카콩 백엔드 모카콩 백엔드. Contribute to mocacong/Mocacong-Backend development by creating an account on GitHub. github.com 들어가며 대부분의 웹 또는 앱 애플리케이션에서는 성능을 위해 페이지네이션을 적용하고 있습니다. 실제로 데이터가 매우 적지 않은 이상, 페이지네이션은 성능 상 유의미한 지표를 가져옵니다. 그렇다면 과연..

Infra 2023.05.14

[Spring] logback 로깅 전략 및 민감정보 마스킹 로그 처리를 하자

애플리케이션에서 로그는 굉장히 중요한 역할을 한다. 특히, 실제 배포된 애플리케이션에서 로그 없이 nohup.jar 파일만 참고한다면 에러 로그나 sql문 정도만 확인할 수 있을 것이다. 사용자 요청이 언제 어떻게 들어왔는지 로그를 남겨줌으로써 디버깅의 용이성 및 애플리케이션 관리를 편리하게 해보도록 하자. 코드는 여기에서도 볼 수 있다. https://github.com/mocacong/Mocacong-Backend GitHub - mocacong/Mocacong-Backend: 모카콩 백엔드 모카콩 백엔드. Contribute to mocacong/Mocacong-Backend development by creating an account on GitHub. github.com log4j2 vs lo..

[Infra] Github Actions + Docker를 이용한 자동 배포

해당 글에서는 Github Actions로 도커 이미지를 이용한 스프링 애플리케이션 자동 배포 방법에 대해 다룹니다. 사이드 프로젝트 `모카콩`의 Wiki에 작성한 글에 해당된다. 해당 프로젝트 github: https://github.com/mocacong/Mocacong-Backend GitHub - mocacong/Mocacong-Backend: 모카콩 백엔드 모카콩 백엔드. Contribute to mocacong/Mocacong-Backend development by creating an account on GitHub. github.com 들어가며 작업을 하고 PR이 머지됐을 때, 업데이트된 코드 내용으로 바로 배포가 되면 얼마나 좋을까요? Github Actions를 이용하면 main (그..

Infra/CI | CD 2023.05.07

[230504] AWS Summit Seoul 2023 후기

그동안 코로나때문에 오프라인으로 운영되지 않았다가 2023년에 드디어 오프라인 행사로 진행된 AWS Summit Seoul 2023에 다녀왔다! 이번 AWS Summit Seoul 2023은 코엑스 몰에서 5월 3일(수), 5월 4일(목) 이틀동안 진행됐다. 나이, 직종을 불문하고 정말 많은 사람들이 왔다. IT 소프트웨어, 제조업, 빅데이터 등등 AWS 클라우드 서버와 조금이라도 연관있는 직업에 종사하시는 분들 대부분이 온 듯했다. 나는 학교 수업들과 겹치는 시간대였기 때문에, 오전 세션에는 참여하지 못했고 3~4일 모두 오후 1시 이후 세션들로 참여했다. 5월 3일 수요일에는 산업 업종별 강연이 진행되어, 수많은 회사에서 AWS를 어떻게 다루고 있는지 소개하는 세션이 주가 됐다. 급격한 트래픽을 AW..

Infra/Aws 2023.05.04

[AWS] SES를 이용한 메일 전송 기능 구현

해당 글에서는 Spring Boot 환경에서 aws SES를 이용한 메일 전송 기능 구현에 대해 다룹니다. 사이드 프로젝트 `모카콩`의 Wiki에 작성한 글에 해당된다. 해당 프로젝트 github: https://github.com/mocacong/Mocacong-Backend GitHub - mocacong/Mocacong-Backend: 모카콩 백엔드 모카콩 백엔드. Contribute to mocacong/Mocacong-Backend development by creating an account on GitHub. github.com 들어가며 모카콩의 초기 프로세스 로직에 이메일 인증 기능이 있었다는 사실. 알고 계셨나요? 원래 모카콩에 회원가입하려면 이메일을 인증해야 됐었어요. (지금은 번거롭다..

Infra/Aws 2023.04.25
반응형