본문 바로가기

CS/Spring

(9)
Kafka 알아보기 Kafka 알아보기 Kafka란?성능과 기능이 좋은 큐라고 할 수 있다. 주로 대량의 이벤트 스트림 데이터를 처리하고 여러 시스템 간에 데이터를 신속하게 전송하는 데 사용된다. Kafka의 주요 특징고성능: 초당 수백만 개의 메시지 처리 가능확장성: 클러스터 형태로 노드를 추가하여 쉽게 확장 가능내결함성: 노드 장애 시 자동 복구 가능비동기 처리: 메시지를 보내고, 나중에 원하는 시점에서 처리 가능이벤트 기반 아키텍처 지원: 마이크로서비스 간 메시지 교환 가능Kafka의 핵심 구성 요소📌 Producer 데이터를 생성하고 Kafka에 전송하는 역할특정 Topic에 메시지를 보내며, 파티션을 지정 가능프로덕션 중에 키를 보내는 것은 필수 X 📌 Broker Kafka 서버로서 Producer가 보낸 메..
동시성 제어 방식 알아보기 동시성 제어 방식 알아보기   동시성 문제는 왜 발생하는가?컴퓨터는 마치 여러 가지 일을 동시에 처리하는 것처럼 보이지만, 실제로는 한 번에 하나의 작업씩 순차적으로 처리하고 있습니다. 이 과정에서 동일한 데이터에 대해 여러 트랜잭션이 동시에 접근하거나 수정하려고 시도하면, 데이터의 정합성에 문제가 발생할 수 있습니다. 예를 들어, 두 트랜잭션이 동시에 같은 데이터를 읽고, 각각 수정한 뒤 저장하려고 하면, 한쪽의 수정 내용이 덮어씌워지거나 의도치 않은 값이 저장될 위험이 있습니다. 이러한 동시성 문제는 데이터 일관성을 위협하며 시스템의 안정성과 신뢰성을 저하시킬 수 있습니다.이러한 이슈를 해결하기 위해 낙관적 락, 비관적 락, 레디스 등 다양한 방법으로 동시성을 해결하고 있습니다. 각각의 방법은 장단점..
TDD 방법론 알아보기 TDD 방법론 알아보기  TDD란?TDD는 Test-Driven-Develpoment란 말을 줄인 말로 테스트 주도 개발이란 뜻이다. TDD의 기본 방법을 간단히 설명하자면 테스트가 실패한 것을 확인한 후에는 해당 메서드에 코딩을 시작하여 테스트가 기능하도록 만드는 것이다. 한마디로 일부로 실패하여 코드를 계속해서 다듬어 나가는 것이라고 생각한다. Test Fail - Red :구현할 기능에 대한 테스트를 먼저 작성합니다.이때, 테스트는 아직 통과하지 못합니다(코드가 없기 때문)."Red"는 실패 상태를 나타냅니다.Green (코드 작성 및 테스트 통과):테스트가 통과하도록 최소한의 코드를 작성합니다.목표는 테스트를 통과시키는 것이며, 코드의 품질보다는 동작에 집중합니다.Refactor (코드 개선):테..
Spring Bean 알아보기 Spring Bean 알아보기  Spring Bean이란?Bean은 Spring Container에 의해 관리되는 객체로 Spring 애플리케이션의 핵심 구성 요소로 사용된다. Spring Bean을 알아보기 이전에 Bean이 등록되는 Spring Container는 세트라고 생각하고 공부하는 것이 개념이 이어져서 같이 알아보도록 하자 Spring Container란?Spring Container는 생성된 Bean을 가지고 있는 통이라고 생각하면 쉽다. 아래 Container 생성부터 사용되는 방법을 확인해 보자. Spring Container 생성 (Java코드)ApplicationContext applicationContext =new AnnotationConfigApplicationContext(A..
DataSource 알아보기 DataSource 알아보기 DataSource란? DataSource는 커넥션을 회득하는 방법을 추상화하는 인터페이스로 DBCP2 커넥션 풀, HikariCP 커넥션 풀 등 다양한 커넥션 풀 방법이 있을 때 커넥션을 회득하는 방법을 변경하는 작업을 최소화하기 위해서 사용된다. 어떤 커넥션이든 연결하는 부분만을 추상화 후 원하는 구현방법을 개발자가 구현체를 통해서 코드를 직접적으로 의존하는 것이 아니라 DataSource 인터페이스에 의존하도록 하여 DB와 연결하는 방법이 더 효율적이다. 위 그림과 같이 DBCP2 커넥션 풀을 사용하다가 HikariCP 커넥션 풀을 사용하려고 할 때 DataSource의 해당 구현체로 변경 작업을 진행하면 간단히 커넥션 풀을 변경할 수 있다. 단, DriverManage..
Connection Pool 이해하기 Connection Pool 이해하기 Connection Pool이란? Connection Pool을 알아보기 이전에 Connection Pool이 등장하게 된 이유부터 알아보자! 애플리케이션은 DB에 접근하기 위해서 커넥션을 얻어야지만 DB와 통신을 할 수 있다. (Connection 대한 내용은 아래 링크에서 확인) 2024.03.22 - [CS/데이터베이스] - JDBC 알아보기 JDBC 알아보기 JDBC 알아보기 JDBC란? JDBC를 알아보기 전 JDBC가 왜 생겼는지에 대해서 먼저 이야기를 해보자면 과거 애플리케이션 서버와 DB를 연결하기 위해서 가각의 DB마다 사용법이 달랐다. 이런 문제로 개발 yukang-laboratory.tistory.com 위 내용을 보고 왔으면 Connection이..
Spring MVC과 관심사 분리 Spring MVC와 관심사 분리 Spring 처리과정 순서도 요청 -> ThreadPool -> Connector(Http Processor) -> Engine -> Host -> Context -> Servlet -> Controller -> Method Http Processor에서 Request와 Response를 생성 후 다음 단계로 계속 전달해준다. Dispatcher Servlet과 MVC Model, View, Controller 3가지로 구성된다. 1 request가 오면 Dispatcher Servlet에서 입력 및 변환을 진행 후 모델을 생성한다. (결과를 저장) 2. Dispatcher Servlet에서 Handler Mapping으로 전달하여 XML 파일에서 핸들러 매핑 항목을 가..
h2 DB에서 mysql로 변경하기 h2 DB에서 mysql로 변경하기 h2 DB를 기본적으로 사용하다가 RDS를 사용하기 위해서 mysql로 변경해야 하는 일이 생겨 변경 도중 오류가 발생하고 이를 해결하는 내용이다. 기존 yml 코드 spring: h2: console: enabled: true path: /h2-console datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:testdb username: sa password: 아주 문제없이 잘 작동되는 코드 변경 후 yml 코드 spring: jpa: generate-ddl: true hibernate: ddl-auto: create datasource: driver-class-name: com.mysql.cj.jdbc.D..