본문 바로가기

반응형

전체 글

Software Algorithm 10 1. DFS (깊이 우선 탐색, Depth-First Search)사용: 그래프 탐색, 백트래킹, 경로 찾기특징: 한 경로를 끝까지 탐색한 후 다른 경로로 넘어가는 방식응용 문제: 미로 찾기, 섬의 개수 세기, 그래프에서의 경로 탐색def dfs(graph, v, visited): visited[v] = True print(v, end=' ') for i in graph[v]: if not visited[i]: dfs(graph, i, visited)2. BFS (너비 우선 탐색, Breadth-First Search)사용: 그래프 탐색, 최단 경로 탐색특징: 가까운 노드부터 탐색하는 방식 (큐를 사용)응용 문제: 최단 경로 문제, 미로 찾기from col.. 더보기
Why you should never default to Microservices https://levelup.gitconnected.com/why-you-should-never-default-to-microservices-c952903fbcb6 Why you should never default to MicroservicesDisclaimer: Grumpy Goose Warninglevelup.gitconnected.com Complexity in Testing소프트웨어는 99개의 기능이 올바르게 동작하고 1개의 기능이 실패했을 때, 그 99개의 성공에 대해 점수를 얻지 못하기 때문에 어렵습니다. 모든 것이 제대로 작동해야 합니다. 따라서 모든 것을 함께 테스트하거나, 테스트 범위가 넓어져야 합니다.테스트 범위는 단일 테스트 내에서 얼마나 많은 것을 테스트할 수 있는지를 측정하는 척.. 더보기
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  잠금을 획득하는 것만으로는 충분하지 않습니다노드가 잠금을 획득한 후 해제하기 전에 동결되거나 실패하는 시나리오를 생각해 보세요. 이 경우 노드가 잠금 데이터베이스/서비스에서 잠금 해제 정보를 업데이트하지 않았.. 더보기