- 동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있나요?2024-12-19 11:20:07외부 서비스 장애로 인해 응답이 오래 걸린다고 했을 때 외부 API 응답으로 대기하는 자원들이 운영 서버 내부에 쌓이면서 성능에 악영향을 줄 수 있습니다. 이를 해결하기 위한 가장 기본적인 방법은 타임아웃을 설정하는 것입니다. 크게 타임아웃에는 커넥션 타임아웃과 리드 타임아웃, HTTP 커넥션 풀 타임아웃을 설정해 볼 수 있습니다.다음과 같이 특정 서비스의 장애가 전체 서비스에 영향을 주는 경우는 어떻게 해결할 수 있을까요? 🤔1. A 서비스, B 서비스, C 서비스 연동 코드가 HTTP 커넥션 풀을 공유한다.2. A 서비스의 장애로 응답 시간 지연이 발생하는 경우 2-1. 풀에 남은 커넥션이 점점 줄어든다. 2-2. 풀에서 커넥션을 구하는 대기 시간이 증가한다. 2-3. B, C 서비..
- [로드맵] Testing2024-12-19 11:18:03테스트는 소프트웨어나 시스템의 기능, 성능, 품질을 평가하여 지정된 요구 사항과 표준을 충족하는지 확인하는 체계적인 프로세스이다. 여기에는 단위 테스트(개별 구성 요소 테스트), 통합 테스트(구성 요소 간 상호 작용 확인), 시스템 테스트(전체 시스템의 동작 평가), 수용 테스트(사용자 요구 사항 충족 확인)를 포함한 다양한 방법론과 수준이 포함된다. 테스트는 수동 또는 자동화 될 수 있으며 결함을 식별하고, 기능이 의도한 대로 작동하는지 확인하고, 시스템이 다양한 조건에서 안정적으로 수행되는지 확인하는 것을 목표로 한다. 효과적인 테스트는 고품질 소프트웨어를 제공하고 배포 전에 위험을 완화하는데 필수적이다. ref) Integration Testing(통합 테스트)ref) Unit Testing(단위 ..
- @Component, @Controller, @Service, @Repository의 차이에 대해서 설명해주세요.2024-12-18 12:56:34@Component, @Service, @Controller, @Repository는 각각의 클래스를 특정 역할을 수행하는 Spring Bean으로 등록할 때 사용됩니다. 각 애너테이션은 클래스가 어떤 역할을 하는지를 명시적으로 나타내며, Spring의 @ComponentScan 기능을 통해 자동으로 Bean으로 등록됩니다. @Service, @Controller, @Repository 어노테이션은 내부적으로 @Component 어노테이션을 사용하고 있습니다.@Component가장 일반적인 형태의 어노테이션으로, 특정 역할에 종속되지 않는 일반적인 Spring Bean을 나타냅니다. 공통 기능을 제공하는 유틸리티 클래스나, 특정 계층에 속하지 않는 일반적인 컴포넌트를 정의할 때 사용됩니다.@Service..
- 동일성과 동등성에 대해서 설명해주세요.2024-12-17 11:17:26동일성과 동등성은 객체를 비교할 때 중요한 개념입니다. 자바에서는 이 두 개념을 equals() 메서드와 == 연산자를 통해 구분할 수 있습니다.equals()와 ==의 차이는 무엇인가요?equals()는 객체의 내용을 비교하는 반면, ==는 객체의 참조(레퍼런스)를 비교합니다. 따라서 두 객체의 내용이 같더라도 서로 다른 객체라면 equals()는 true를 반환할 수 있지만, ==는 false를 반환합니다.동등성(Equality)은 뭔가요?동등성은 논리적으로 객체의 내용이 같은지를 비교하는 개념입니다. 자바에서는 equals() 메서드를 사용하여 객체의 동등성을 비교합니다. Apple 클래스를 예시로 보면, Object.equals 메서드를 오버라이딩하여 객체의 실제 데이터를 비교하도록 했습니다. 그..
- [로드맵] Web Security2024-12-17 10:27:16웹 보안은 데이터 기밀성, 무결성 및 가용성을 보장하기 위해 웹 애플리케이션을 위협과 취약성으로부터 보호하는 것을 포함한다. 주요 관행에는 강력한 인증 및 권한 부여 매커니즘, 안전한 데이터 전송을 위한 암호화(예: SSL/TLS) 사용, SQL 주입 및 크로스 사이트 스크립팅(XSS)과 같은 공격을 방지하기 위한 사용자 입력 검증이 포함된다. 보안 코딩 관행, 효과적인 세션 관리, 정기적인 업데이트 및 패치는 보안을 유지하는데 필수적이다. 또한 침투 테스트 및 취약성 평가를 포함한 지속적인 보안 테스트는 잠재적인 약점을 식별하고 해결하여 애플리케이션을 보호하고 사용자 신뢰를 유지하는데 도움이 된다. MD5더보기MD5(Message-Digest Algorithm 5)는 널리 사용되는 암호화 해시 함수로,..
- equals와 hashCode는 왜 함께 재정의해야 할까요?2024-12-16 18:38:30equals와 hashCode 메서드는 객체의 동등성 비교와 해시값 생성을 위해서 사용할 수 있습니다. 하지만, 함께 재정의하지 않는다면 예상치 못한 결과를 만들 수 있습니다. 가령, 해시값을 사용하는 자료구조(HashSet, HashMap..)을 사용할 때 문제가 발생할 수 있습니다.class EqualsHashCodeTest { @Test @DisplayName("equals만 정의하면 HashSet이 제대로 동작하지 않는다.") void test() { // 아래 2개는 같은 구독자 Subscribe subscribe1 = new Subscribe("team.maeilmail@gmail.com", "backend"); Subscribe subsc..
- [로드맵] Memcached2024-12-16 18:03:36Memcached는 범용 분산 메모리 캐싱 시스템이다. 종종 외부 데이터 소스(예: 데이터베이스 또는 API)를 읽어야 하는 횟수를 줄이기 위해 RAM에 데이터와 객체를 캐싱하여 동적 데이터베이스 구동 웹사이트의 속도를 높이는 데 사용된다.Memchached는 무료 오픈 소스 소프트웨어로, 개정된 BSD 라이선스에 따라 라이선스가 부여된다. Memcached는 Unix와 유사한 운영체제(Linux 및 macOS)와 Microsoft Windows에서 실행된다. 라이브러리에 따라 달라진다. Memcached의 API는 여러 머신에 분산된 매우 큰 해시 테이블을 제공한다. 테이블이 가득 차면 후속 삽입으로 인해 오래된 데이터가 가장 최근에 사용되지 않은(LRU) 순서로 제거된다. Memcached를 사용하는..
- 백준 1260번: 그래프 탐색 (DFS와 BFS)2024-12-14 01:25:54문제 설명https://www.acmicpc.net/problem/1260백준 1260번 문제는 주어진 그래프에 대해 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)을 수행하는 문제입니다. 입력으로 정점의 개수, 간선의 개수, 시작 정점을 받고, 그래프의 간선 정보를 이용해 탐색 결과를 출력합니다. 문제 해결 전략그래프 표현:그래프는 인접 리스트 방식으로 표현합니다.Map>를 사용하여 각 정점에 대한 인접한 정점 리스트를 저장합니다.탐색 알고리즘 구현:DFS는 재귀를 통해 구현하고, BFS는 큐를 사용하여 구현합니다.두 알고리즘 모두 방문한 정점을 기록하여 중복 방문을 방지합니다.입력 및 출력:표준 입력을 통해 그래프 정보를 읽고, 탐색 결과를 표준 출력으로 작성합니다. 코드import java.io..