본문 바로가기

반응형

전체 글

System Design — Tips https://medium.com/javarevisited/system-design-tips-62c26366cf48 System Design — TipsDesigning a robust and scalable system involves careful planning and consideration of various factors. Here are some essential tips to…medium.com 다음은 시스템 설계 시 유용한 몇 가지 팁입니다.1. 요구 사항 이해하기기능적 요구 사항: 시스템이 수행해야 할 기능 및 특징.비기능적 요구 사항: 성능, 확장성, 보안, 가용성 등.2. 적절한 아키텍처 선택하기모놀리식 vs. 마이크로서비스: 하나의 큰 애플리케이션으로 만들지, 마이크로서비스로 분할.. 더보기
Throttling Design Pattern to Handle an Extreme Load https://medium.com/@dmosyan/throttling-design-pattern-to-handle-an-extreme-load-a0b24c31e3ec 리소스 소비 제어는 애플리케이션이나 서비스가 과도한 부하가 걸릴 때에도 시스템이 계속 작동하고 SLA(서비스 수준 협약)를 충족할 수 있게 해줍니다. 애플리케이션의 부하는 시간에 따라, 활성 사용자 수나 그들이 수행하는 활동의 종류에 따라 달라집니다. 만약 시스템의 처리 요구 사항이 사용 가능한 리소스 용량을 초과하면 성능 저하나 시스템 오류가 발생할 수 있습니다. 이를 해결하기 위해 클라우드에서는 여러 전략을 사용할 수 있으며, 그 중 하나가 자동 확장(autoscaling)을 통해 사용자의 요구에 맞게 리소스를 동적으로 조정하는 것입니다.. 더보기
How to Prevent Duplicate Requests Effectively https://medium.com/javarevisited/rest-api-how-to-prevent-duplicate-requests-effectively-d3be88ef7838 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 구현 아이디어사용자가 API를 호출할 때, 요청 본문(Request Body)에서 특정 데이터를 추출하여 Redis 키를 생성합니다.이 키는 MD5로 해시되어 저장되며, Redis에 키가 이미 존재하는지 .. 더보기
Optimizing Java App Performance by understanding JVM Architechture https://medium.com/@kiarash.shamaii/optimizing-java-app-performance-by-understanding-jvm-architechture-7bd32eeac520 Optimizing Java App Performance by understanding JVM ArchitechtureAs Java developers, we’re often tasked with building high-performance applications that can handle demanding workloads and provide a…medium.com  힙 메모리 관리:메모리 누수: 객체가 더 이상 필요 없는데도 메모리에서 해제되지 않으면 힙 메모리가 계속 커져서 시스템이 느려지.. 더보기
E-commerce Platform like Amazon https://medium.com/@kevinchwong/e-commerce-platform-like-amazon-6adf3be577fd  사용자와 웹 애플리케이션 상호작용사용자는 웹 애플리케이션을 통해 제품을 탐색하며, CDN을 통해 정적 콘텐츠와 캐시된 데이터를 제공합니다.API 게이트웨이 및 로드 밸런서웹 애플리케이션은 API 게이트웨이에 요청을 보내고, 이 요청은 로드 밸런서로 라우팅됩니다. 로드 밸런서는 백엔드 서비스로 요청을 분배합니다.백엔드 서비스제품 서비스는 캐시와 제품 데이터베이스(읽기 복제본 포함)에서 데이터를 가져옵니다.사용자 서비스는 사용자 데이터베이스와 그 읽기 복제본을 조회합니다.주문 서비스는 주문 데이터베이스와 그 읽기 복제본에 데이터를 씁니다.결제 서비스는 결제 게이트웨이를 .. 더보기
Pessimistic Locking in Distributed Systems https://medium.com/@_sidharth_m_/how-distributed-systems-avoid-race-conditions-using-pessimistic-locking-1dc112a82b5e How Distributed Systems Avoid Race Conditions using Pessimistic Locking?Understanding Pessimistic Locks, Leases, and Fence Tokens in Distributed Systemsmedium.com  잠금을 획득하는 것만으로는 충분하지 않습니다노드가 잠금을 획득한 후 해제하기 전에 동결되거나 실패하는 시나리오를 생각해 보세요. 이 경우 노드가 잠금 데이터베이스/서비스에서 잠금 해제 정보를 업데이트하지 않았.. 더보기
k8s JVM memory Config 개요Pod total memory 대비 JVM memory 설정값 측정Pod total memoryPod에 지정 된 limit memory 값ex) 2000MPod OS 기본 사용 memoryPod 구동 시, 기본적으로 사용하는 memory대략 200M 가정 ( 대체로 200M가 보다 더 작을 것이지만, 여유롭게 가정)JVM memoryJVM total memory = heap + metaspaceex) 예제 가정값Pod total memory: 2000Mmetaspace: 256MPod total memory 대비 JVM memory Max 사용량 비율(Pod total memory * heap 사용 비율) + metaspace = JVM total memory → Pod total memory 대비 .. 더보기
6 Tips for Resolving Common Java Performance Problems https://medium.com/javarevisited/6-tips-for-resolving-common-java-performance-problems-b88f42dc6118 6 Common Java performance problems 1. Memory leaks 자바는 가비지 컬렉터를 통해 자동 메모리 관리를 제공함에도 불구하고, 성능 문제에 대한 보장을 하지 않습니다. 가비지 컬렉터는 더 이상 사용되지 않는 메모리를 자동으로 식별하고 회수하지만, 자동 메모리 관리에만 의존하는 것은 성능 문제에서 완벽한 방법은 아닙니다. 자바의 가비지 컬렉터는 더 이상 사용되지 않는 메모리를 자동으로 식별하고 회수하여 언어의 강력한 메모리 관리 시스템의 필수적인 기능 입니다. 그러나 이러한 고급 메커니즘을 사용하.. 더보기