분류 전체보기
-
2024.10.17 환기TIL 2024. 10. 17. 23:42
음 미뤄놨던 일, 해보고 싶은 것을 하자.일단 실시간 랭킹을 만들어 보고 싶으니 이걸 해야겠다. 2024.06.03 Design a Real-Time Leaderboard systemDesign a Real-Time Leaderboard system for millions of users Design a Real-Time Leaderboard system for millions of usersUnpacking Challenges, Assumptions, and the Scope of Real-Time Leaderboard Designmedium.com 사용자가 많고 쌓이는 데이터가gisungcu.tistory.comWe can use sse instead of websockets and elastic s..
-
2024.10.15 Cache controlTIL 2024. 10. 16. 00:36
인터넷이 안되는 환경에서도 이미지를 보고 싶다는 요구 사항이 있었다. 처음에는 인터넷이 되는 곳에서 데이터를 받고 나서 인터넷이 안 되는 환경으로 전환되는 구조였다. 음 브라우저 캐시가 생각나 이를 적용해보았다.S3에서 이미지를 받아오는데 요청 쿼리 스트링에 cache control 관련 설정인 max-age나 value를 보내면 응답에 max-age가 붙어서 오는 구조이다. S3 자체의 메타데이터를 수정하면 다른 서비스에 영향을 줄까 걱정했지만, 좋은 파라미터가 있었다. https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property Class: AWS.S3 — AWS SDK for JavaScriptWe reco..
-
글또10기 삶의 지도글또 2024. 10. 12. 17:44
삶의 지도라는 것은 제가 붙인 이름이며, 자신이 어떤 사람이고 어떤 성격을 가지고 있고, 어떤 사건으로 지금의 내가 되었는가에 대해 작성한 내용입니다. - 글또 10기 모집 내용 중 안녕하세요. 이번 글또 10기를 시작하며 글을 남깁니다. 어느덧 네 번째인 글또 10기, 7, 8, 9기를 지나 시간이 이렇게 흘렀습니다. 2022년 처음 참여했는데, 벌써 2025년이 다가오고 있다니, 시간이 참 빠르게 느껴집니다. 삶의 지도글또에 처음 지원할 때 작성하게 되는 주제 중 하나가 ‘삶의 지도’라고 알고 있습니다. 저는 이전 기수부터 참여했기에 이 주제로 글을 써본 적이 없지만, 이번 기회에 저만의 삶의 지도를 그려보려 합니다. 글의 형식이 정해져 있다고 생각하지 않기에, 자유롭게 제 이야기, 생각을 풀어보겠습..
-
2024.10.08 Duplicate Requests, Throttling Design PatternTIL 2024. 10. 9. 00:07
Rest API: How to Prevent Duplicate Requests EffectivelyThe solution to prevent duplicate requests that I want to talk about here is that when a user manipulates an API feedmedium.com 중복 request를 어떻게 처리할지에 대한 글이다.이전에도 동일한 주제의 글을 읽었었는데 그때는 UUID를 UK로 사용해 중복을 방지했고 이번에는 본문의 일부를 해쉬 해서 사용한다.전자의 경우는 페이지 새로고침을 하면 UUID 새로 발급되어서, 어떻게 보면 중복 요청을 완벽히 막지는 않는다. (새로고침을 했다면 이걸 중복으로 봐야 할까?)후자는 본문의 일부를 해쉬 하고 UK로 만들..
-
2024.10.05 NATTIL 2024. 10. 5. 16:44
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_NAT_Instance.html NAT 인스턴스 - Amazon Virtual Private Cloud이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.docs.aws.amazon.com서버 아키텍쳐를 보면 nat instance가 존재한다 private subnet에서 인터넷 연결을 위해서 존재하는 인스턴스이다.인터넷과 소통하려면 공인 ip가 있어야하는데 private subnet에 있는 instance는 사설 ip밖에 없으니 nat를 통해 변환 후 나가는 것이다. 이는 보안적인 이점이 있..
-
2024.09.21 java-acquire-lock-by-keyTIL 2024. 9. 22. 12:15
ConcurrentHashSet 은 지원하지 않지만 ConcurrentHashMap.newKeySet를 지원한다.내부적으로는 ConcurrentHashMap의 key를 관리한다. https://www.baeldung.com/java-acquire-lock-by-key 단일 어플리케이션에서 사용할 수 있는 제어 방법이다.key로 lock을 잡을 수 있는 방법이다. ReentrantLock을 사용했고, 이건 순서를 보장할 수 있다. FairSync냐 NonfairSync냐를 생성자로 정할 수 있다.synchronized는 잠금대기를 jvm이 정해서 lock을 정해주는데 FairSync로 되면 기다린 순서로 lock을 준다. 코드를 보면 심플하게 잘 짜여 있다.한 가지 걸리는 것은 unlock 하는 부분인데..
-
2024.09.20 filter, interceptor, aopTIL 2024. 9. 20. 15:37
filter, interceptor, aop의 차이 기능적인 차이를 보자면.. filter는 servlet container에서 동작하기 때문에 무슨 메소드가 실행되는지 모른다.interceptor의 prehandle은 handler adaptor 전에 실행되는 것 이기 때문에 handler method를 구할 수 있다. aop는 좀 다른게 단순 request에만 적용할 수 있는 게 아닌 모든 layer 메소드에 걸 수 있다. interceptor에서 afterCompletion의 차이postHandle은 예외 때문에 실행이 안될 수 있다.무조건 실행되어야한다면 afterCompletion을 사용하면 된다. 범위는 잘 알려져 있는데 filter는 tomcat에서(sevlet container)동작하고..
-
HikariCP와 Slow Query로 인한 Commit 성공과 Rollback 실패글또 2024. 9. 19. 13:36
0. 들어가며 안녕하세요.이번 글에서는 회사에서 겪었던 DB 관련 이슈에 대해 이야기해보려 합니다.문제는 Spring Boot, HikariCP, MariaDB 환경에서 발생했으며, HikariCP와 Slow Query로 인해 트랜잭션 실패가 발생한 사례를 다룹니다. 원인을 분석하고, 이에 대한 해결책을 함께 고민해보겠습니다.중간중간에 부가설명은 접은글(더보기)로 작성했습니다. 문제 상황트랜잭션 사후 처리대응마무리 1. 문제 상황저희 서비스는 MSA 구조로 되어있으며, 각 서비스는 동기와 비동기 통신으로 소통합니다. 이번 문제는 A 서비스와 B 서비스 간 동기 통신 중 발생했습니다. A 서비스는 B 서비스에 업데이트를 요청하고, B 서비스에서 성공적으로 업데이트가 반영되면 성공을 반환합니다.A 서비스는 ..