본문 바로가기

반응형

emotional developer/detect-pattern

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개의 성공에 대해 점수를 얻지 못하기 때문에 어렵습니다. 모든 것이 제대로 작동해야 합니다. 따라서 모든 것을 함께 테스트하거나, 테스트 범위가 넓어져야 합니다.테스트 범위는 단일 테스트 내에서 얼마나 많은 것을 테스트할 수 있는지를 측정하는 척.. 더보기
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에 키가 이미 존재하는지 .. 더보기
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  잠금을 획득하는 것만으로는 충분하지 않습니다노드가 잠금을 획득한 후 해제하기 전에 동결되거나 실패하는 시나리오를 생각해 보세요. 이 경우 노드가 잠금 데이터베이스/서비스에서 잠금 해제 정보를 업데이트하지 않았.. 더보기
Clean Code: Optional Parameters https://medium.com/@bubu.tripathy/clean-code-optional-parameters-327d67abbf90 메서드에서 선택적 매개변수를 다룰 때는 긴 매개변수 목록이나 널 값 사용을 피하는 것이 좋습니다. 대신 메서드 오버로딩 또는 빌더 패턴으로 코드 가독성과 유지 관리성을 향상 시키는 것이 좋습니다. 이 방법들은 다양한 매개변수 집합을 가진 메서드를 호출할 때 더 깔끔한 인터페이스를 제공합니다. ⭐️ 메서드 오버로딩을 활용하여 서로 다른 매개변수 집합을 가진 메서드의 여러 버전을 생성하세요. 이렇게 하면 선택적 매개변수에 의존하지 않고도 명확하고 명시적으로 호출할 수 있습니다. ⭐️ 선택적 매개변수의 수가 상당히 많아지면 빌더 패턴을 구현하는 것을 고려하세요. 이 접근 .. 더보기
What Is a Modular Monolith? https://medium.com/@MilanJovanovicTech/what-is-a-modular-monolith-babd989a4ea2 What is a Modular Monolith? 모듈형 모놀리스는 애플리케이션을 잘 정의된 경계를 가진 독립적인 모듈 또는 구성 요소로 구조화하는 아키텍처 패턴입니다. 모듈은 논리적 경계를 기준으로 분할되어 관련 기능을 함께 그룹화합니다. 이 접근 방식은 시스템의 응집력을 크게 향상시킵니다. 모듈은 느슨하게 결합되어 있어 모듈화와 분리를 더욱 촉진합니다. 모듈은 공용 API를 통해 통신하며, 이에 대한 자세한 내용은 모듈형 모놀리스 통신 패턴에 대한 글에서 확인할 수 있습니다. 그렇다면 모듈식 설계의 장점은 무엇일까요? Benefits of a Modular Mo.. 더보기