- JPA에서 ID 생성 전략에 대해 설명해주세요.2024-11-29 10:21:34JPA에서 ID를 생성하기 위해서는 직접 할당과 자동 할당을 사용할 수 있습니다. 직접 할당은 @Id어노테이션만을 사용하여 Id값을 직접 할당하는 방식입니다. 반면, 자동 할당은 @Id와 @GeneratedValue를 함께 사용해서 원하는 키 생성 전략을 선택하는 방식입니다. @GeneratedValue의 stretagy 옵션을 통해 생성 전략을 설정할 수 있는데, 여기에 올 수 있는 값인 GenerationType는 다음과 같습니다.@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { GenerationType strategy() ..
- [로드맵] Redis2024-11-29 10:10:31Redis는 속도와 다양성으로 유명한 오픈소스 인메모리 데이터 구조 저장소이다. 문자열, 목록, 집합, 해시, 정렬된 집합을 포함한 다양한 데이터 유형을 지원하고 캐싱, 세션 관리, 실시간 분석, 메시지 브로커링과 같은 기능을 제공한다. Redis는 키-값 저장소로 작동하여 빠른 읽기 및 쓰기 작업을 허용하며 종종 애플리케이션의 성능과 확장성을 향상시키는 데 사용된다. 디스크에 데이터를 저장하는 지속성 옵션, 고가용성을 위한 복제, 수평적 확장을 위한 클러스터링을 지원한다. Redis는 데이터에 대한 저지연 액세스와 높은 처리량 성능이 필요한 시나리오에 널리 사용된다.
- 로그와 메트릭을 설명해주세요.2024-11-28 09:48:46로그는 서버가 동작할 때 서버의 상태와 동작 정보를 시간 경과에 따라 기록된 결과입니다. 로그는 시스템의 오류와 문제들을 쉽게 찾아낼 수 있도록 도와줍니다. 반면, 메트릭은 시스템의 성능과 상태에 대한 통계적인 정보를 의미합니다. 메트릭을 잘 수집하면 시스템의 현재 상태를 손쉽게 파악할 수 있고, 사업 현황에 관한 유용한 정보를 얻을 수 있습니다. 가령, 메트릭은 DAU, Retension, CPU 사용량, 메모리 사용량 등이 있습니다.로그와 메트릭을 수집해 보신 적이 있나요? 🤔아래부터는 예시로 생각해주세요! 각자 진행하신 프로젝트 상황에 맞는 답변을 생각해 주세요. 😀스프링 부트 액추에이터를 사용해 메트릭을 생성하고 프로메테우스에 저장한 다음 그라파나로 시각화한 경험이 있습니다. 수집한 지표는 ..
- [로드맵] Server Side2024-11-28 09:46:19server side 캐싱은 자주 액세스하는 데이터를 서버의 메모리에 저장하여 반복적인 데이터 검색이나 계산의 필요성을 줄임으로써 애플리케이션 성능을 개선하는 데 사용되는 기술이다. 이 접근 방식은 응답 시간을 단축하고 데이터 베이스 및 기타 백엔드 서비스의 부하를 줄이는데 도움이 된다. 일반적인 방법으로는 데이터베이스 쿼리 결과, HTML 조각 및 API 응답을 캐싱하는 것이 있다. 인기 있는 서버 측 캐싱 도구와 기술로는 Redis, Memcached 및 웹 프레임워크의 기본 제공 캐싱 메커니즘이 있다. 캐싱 된 콘텐츠를 효율적으로 관리하고 제공함으로써 server side 캐싱은 애플리케이션의 확장성과 응답성을 향상시킨다. ref) Redisref) Memcached
- 얕은 복사와 깊은 복사에 대해서 설명해주세요.2024-11-27 09:58:24자바에서 객체를 복사할 때 얕은 복사와 깊은 복사라는 두 가지 방식이 있습니다. 먼저 Book과 Author라는 두 클래스를 사용해서 예제를 살펴볼게요. Book은 책의 이름(name)과 저자(author) 정보를 가지고 있고, Author는 저자의 이름을 가지고 있습니다.class Book { private String name; // 책 이름 private Author author; // 저자 public Book(String name, Author author) { this.name = name; this.author = author; } public Book shallowCopy() { // 얕은 복사 return new Book(t..
- [로드맵] CDN2024-11-27 09:56:07콘텐츠 전송 네트워크(CDN) 서비스는 웹사이트의 고가용성 및 성능 개선을 목표로 한다. 이는 일반적으로 클라이언트 요청에 지리적으로 더 가까운 엔드포인트를 통해 웹사이트 자산 및 콘텐츠를 빠르게 전송하여 달성한다.기존의 상업용 CDN(Amazon CloudFront, Akamai, CloudFlare 및 Fastly)은 이 목적으로 사용할 수 있는 전 세계의 서버를 제공한다. CDN을 통해 자산과 콘텐츠를 제공하면 웹사이트 호스팅의 대역폭이 줄어들고 잠재적인 중단을 줄이기 위한 추가 캐싱 계층이 제공되며 웹사이트 보안도 개선할 수 있다.
- 트랜잭션 격리수준은 무엇인가요?2024-11-26 10:28:00트랜잭션의 격리 수준은 동시에 여러 트랜잭션이 실행될 때 한 트랜잭션이 다른 트랜잭션의 연산에 영향을 받지 않도록 하는 정도를 말합니다. 낮은 격리 수준은 동시 처리 능력을 높이지만, 데이터의 일관성 문제를 발생시킬 수 있습니다. 반면, 높은 격리 수준은 데이터의 일관성을 보장하지만, 동시 처리 능력이 떨어질 수 있습니다. 즉, 데이터 정합성과 성능은 반비례합니다. 트랜잭션 격리 수준은 개발자가 트랜잭션 격리 수준을 설정할 수 있는 기능을 제공하는 기능입니다.트랜잭션 격리 수준은 어떤 것이 있고 각각 어떤 특징이 있나요? 🤔트랜잭션 격리 수준은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ가 존재합니다.READ UNCOMMITTED는 커밋이 되지 않은 트랜잭션..
- [로드맵] Client Side2024-11-26 10:14:09클라이언트 측 캐싱은 웹 브라우저나 애플리케이션이 성능을 개선하고 서버 부하를 줄이기 위해 사용자 기기에 로컬로 데이터를 저장하는 기술이다. 이는 후속 방문 시 더 빠르게 액세스할 수 있도록 클라이언트 시스템에 웹 페이지, 이미지, 스크립트 및 기타 리소스의 사본을 저장하는 것을 포함한다. 최신 브라우저는 HTTP 캐싱(Cache-Control 및 ETag와 같은 헤더 사용), 오프라인 기능을 위한 서비스 워커, 로컬 스토리지 API를 포함한 다양한 캐싱 메커니즘을 구현한다. 클라이언트 측 캐싱은 네트워크 트래픽과 로드 시간을 크게 줄여 특히 느린 연결에서 사용자 경험을 향상시킨다. 그러나 향상된 성능과 최신 콘텐츠에 대한 필요성 간의 균형을 맞추기 위해 신중한 관리가 필요하다. 개발자는 적절한 캐시 무..