TIL
-
2024.10.19 SSLTIL 2024. 10. 19. 17:35
HTTPS 사용 시 SSL handshake를 먼저 해야 하는데, 그 안의 행위가 잘 설계되어 있다고 느꼈다.CA의 비대칭 키와 서버의 비대칭 키, 이 둘을 잘 사용하는 것이 인상적이다.먼저 비대칭키 방식으로 서로 신뢰할 수 있는지도 확인하고 최종적으로는 대칭키까지 생성해 사용까지 한다.간단히 본다면..서버는 CA에 서버의 공개키와 도메인 주소를 넘긴다CA는 서버의 공개키를 CA의 비밀키로 암호화해서 인증서로 만들어준다.클라이언트가 서버와 SSL핸드쉐이크를 시작한다.(클라이언트 Hello) 클라이언트는 자신이 사용할 수 있는 알고리즘과 난수를 전달한다.(서버 Hello) 서버도 응답하며 사용할 알고리즘과 난수, 인증서를 전달한다.클라이언트는 브라우저에 내장되어 있는 CA 공개키로 인증서를 복호화하고 서버..
-
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..
-
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)동작하고..
-
2024.09.16 JDBC Internal - 타임아웃의 이해TIL 2024. 9. 16. 23:23
https://d2.naver.com/helloworld/1321 음 회사 로그에 이상한 부분이 있다. 먼저 설정은 socket timeout은 10초이고 statement timeout은 30초이다. 위의 글대로 이해하면 statement timeout은 나와서는 안 되는 예외인데 로그가 찍혀있다.socket timeout과 statement timeout 둘 다 종종 찍혀있지만, statement timeout이 더 길게 되어있으면 socket timeout 보다 먼저 동작한다고 이해했는데..slow쿼리가 뭔가 패킷을 보내고 있는 것인가? 음 StreamingResult라서 의미가 있나? 대용량 쿼리긴 했는데..https://stackoverflow.com/questions/24676111/stre..