https://medium.com/javarevisited/6-tips-for-resolving-common-java-performance-problems-b88f42dc6118 6 Common Java performance problems 1. Memory leaks 자바는 가비지 컬렉터를 통해 자동 메모리 관리를 제공함에도 불구하고, 성능 문제에 대한 보장을 하지 않습니다. 가비지 컬렉터는 더 이상 사용되지 않는 메모리를 자동으로 식별하고 회수하지만, 자동 메모리 관리에만 의존하는 것은 성능 문제에서 완벽한 방법은 아닙니다. 자바의 가비지 컬렉터는 더 이상 사용되지 않는 메모리를 자동으로 식별하고 회수하여 언어의 강력한 메모리 관리 시스템의 필수적인 기능 입니다. 그러나 이러한 고급 메커니즘을 사용하..
https://medium.com/@bubu.tripathy/clean-code-optional-parameters-327d67abbf90 메서드에서 선택적 매개변수를 다룰 때는 긴 매개변수 목록이나 널 값 사용을 피하는 것이 좋습니다. 대신 메서드 오버로딩 또는 빌더 패턴으로 코드 가독성과 유지 관리성을 향상 시키는 것이 좋습니다. 이 방법들은 다양한 매개변수 집합을 가진 메서드를 호출할 때 더 깔끔한 인터페이스를 제공합니다. ⭐️ 메서드 오버로딩을 활용하여 서로 다른 매개변수 집합을 가진 메서드의 여러 버전을 생성하세요. 이렇게 하면 선택적 매개변수에 의존하지 않고도 명확하고 명시적으로 호출할 수 있습니다. ⭐️ 선택적 매개변수의 수가 상당히 많아지면 빌더 패턴을 구현하는 것을 고려하세요. 이 접근 ..
https://medium.com/@MilanJovanovicTech/what-is-a-modular-monolith-babd989a4ea2 What is a Modular Monolith? 모듈형 모놀리스는 애플리케이션을 잘 정의된 경계를 가진 독립적인 모듈 또는 구성 요소로 구조화하는 아키텍처 패턴입니다. 모듈은 논리적 경계를 기준으로 분할되어 관련 기능을 함께 그룹화합니다. 이 접근 방식은 시스템의 응집력을 크게 향상시킵니다. 모듈은 느슨하게 결합되어 있어 모듈화와 분리를 더욱 촉진합니다. 모듈은 공용 API를 통해 통신하며, 이에 대한 자세한 내용은 모듈형 모놀리스 통신 패턴에 대한 글에서 확인할 수 있습니다. 그렇다면 모듈식 설계의 장점은 무엇일까요? Benefits of a Modular Mo..
mongodb bulk remove https://www.mongodb.com/docs/manual/reference/method/Bulk.find.remove/ https://docs.spring.io/spring-data/mongodb/reference/mongodb/template-crud-operations.html https://www.mongodb.com/community/forums/t/how-best-to-delete-a-huge-amount-of-data-from-a-collection/212849
Release Train IT회사에서 일상적으로 사용하는 RT는 "Release Train"의 약자입니다. 소프트웨어 개발과정에서 사용 되는 용어로, 주로 Agile 또는 린소프트웨어 개발 방법론에서 활용됩니다. Release Train은 여러 팀이 협력하여 일정 주기마다 새로운 소프트웨어 버전을 배포하는 프로세스를 나타냅니다. 이 프로세스는 큰 프로젝트 또는 제품을 관리하고 지속적으로 배포하기 위해 사용됩니다. Release Train 접근 방식은 다음과 같이 동작합니다: 일정 주기: 일정한 주기(보통은 2주, 4주 등)로 소프트웨어 버전을 배포하는 시간 단위를 결정합니다. 팀 협력: 여러 개발 팀이 하나의 Release Train에 참여합니다. 이 팀들은 동시에 개발을 진행하며, 주기마다 생성된 기능..
https://tidyfirst.substack.com/p/tdd-isnt-design?fbclid=IwAR2CvJPKgRkoSiKl6LfHIugUsFyJI2bFkfrB80oebLdb_V4PeWbJgaWBUBw 프롬프트는 다음과 같았습니다: "TDD만으로 훌륭한 시스템 설계가 나올 수 있다는 생각은 마음에 들지 않습니다." 결론적으로 동의합니다. 당신은 디자인 결정을 내려야 합니다. 더 자세한 답변은 다음과 같습니다. 조금이라도 상식이 있는 사람이라면 TDD가 디자인의 필요성을 대체한다고 말하지 않습니다. 핵심 질문은 '언제'입니다. 첫 번째 테스트를 작성하고 통과하기 전에 몇 가지 구현 디자인 결정을 제안하고 있습니다. 특히 몇 달에서 몇 년이 걸리던 과거의 디자인 '단계'와 비교하면 그렇게 끔찍해 보..
https://www.baeldung.com/spring-tests 주요 부분이라고 생각한 것만 한글화. 2. Integration Tests 통합 테스트는 자동화된 테스트 suites의 기본적인 부분입니다. 하지만 건강한 테스트 피라미드를 따른다면 단위 테스트만큼 많지는 않아야 합니다. Spring과 같은 프레임워크에 의존하면 시스템의 특정 동작에 대한 위험을 제거하기 위해 상당한 양의 통합 테스트가 필요합니다. Spring 모듈(데이터, 보안, 소셜 등)을 사용하여 코드를 더 단순화할수록 통합 테스트의 필요성은 더 커집니다. 특히 인프라의 일부분을 @Configuration 클래스로 옮길 때 더욱 그렇습니다. "프레임워크를 테스트"해서는 안 되지만, 프레임워크가 우리의 요구 사항을 충족하도록 구성되어..
https://medium.com/@snyksec/a-guide-to-input-validation-with-spring-boot-f041b19c82e6 A guide to input validation with Spring Boot 스프링 부트 빈 유효성 검사 구현하기 이 튜토리얼에서는 인메모리 데이터베이스를 사용하는 간단한 CRUD(생성, 읽기, 업데이트, 삭제) 애플리케이션에 대한 Bean 유효성 검사를 구현합니다. 사용자는 이름, 이메일 및 비밀번호를 제공하며, 특정 기준을 충족해야 허용됩니다. 여기서 사용되는 상위 수준 아키텍처는 RESTful API가 포함된 백엔드 서버와 인메모리 H2 데이터베이스로 구성됩니다. 클라이언트 애플리케이션이 웹 서비스(이 튜토리얼의 애플리케이션)를 호출하면 요청이..