본문 바로가기

Spring-Boot22

토비의 스프링 3.1 Vol.1 145p ~ 250p 정리 2장. 테스트 스프링이 개발자에게 제공하는 가장 중요한 가치 = 객체지향과 테스트 2.1 UserDaoTest 다시 보기 2.1.1 테스트의 유용성 테스트가 성공하면 모든 결함이 제거됐다는 확신을 얻을 수 있음 2.1.2 UserDaoTest의 특징 - 웹을 통한 DAO 테스트 방법의 문제점 1. 모든 레이어의 기능을 다 만들고 나서야 테스트가 가능하다. 2. 테스트를 하는 중에 에러가 나면 어디에서 문제가 발생했는지 찾아야 한다. 3. 오류가 있을 때 빠르고 정확하게 대응하기가 힘들다. - 작은 단위의 테스트 그 대상에만 집중해서 테스트하는 것이 바람직 작은 단위의 테스트를 단위 테스트 - 단위 테스트 필요 이유 개발자가 설계하고 만든 코드가 원래 의도한 대로 동작하는지를 개발자 스스로 빨리 확인받기 .. 2023. 12. 28.
토비의 스프링 3.1 Vol.1 40p ~ 143p 정리 스프링이란 무엇인가? 스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 - 애플리케이션의 기본 틀 - 스프링 컨테이너 스프링 컨테이너는 설정정보를 참고로 해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. - 공통 프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP 1. IOC/DI 모델 2. 서비스 추상화 3. AOP - 기술 API 스프링은 엔터프라이즈 애플리케이션을 개발의 다양한 영역에 바로 활용할 수 있는 방대한 양의 기술 API를 제공한다. 스프링의 성공요인 - 단순함 가장 단순한 객체지향적인 개발 모델인 POJO 프로그래밍 강력 주장 - 유연성 스프링의 유연성으로 인해 다른 많은 프레임워크와 편리하게 접목돼서 사용할 수 있으며 유연성과 확장성이 매우 뛰.. 2023. 12. 28.
실시간 시세 시스템아키텍처에 대한 고민, feat.토스증권 개요 현재 진행 중인 백엔드 프로젝트에서 카프카를 활용한 실시간 비트코인 시세를 어떻게 구현을 해야 하는지 많은 고민을 하게 되었고 토스증권의 시스템아키텍처를 통해서 힌트를 얻을 수 있었다. 출처 - youtube https://www.youtube.com/watch?v=SF7eqlL0mjw https://www.youtube.com/watch?v=DQFroVSkqJM 토스증권의 실시간 및 누적 시세 시스템 아키텍처 토스증권의 실시간 시세 시스템 아키텍처는 크게 국내시세와 해외시세로 나누어져 있는 것을 볼 수 있다.기존의 증권 시스템들과의 차이점은 카프카를 활용하여 실시간 시세를 클라이언트에게 전달한다는 점이 있다. 또한 가공 서버에서는 누적시세와 실시간시세로 나뉘며 누적시세는 과거 데이터 활용을 위해서.. 2023. 10. 14.
Spring-Boot + redis + kafka로 대용량 트래픽을 관리해보자 이 내용은 이전에 포스팅하였던 LINE의 HotChat에 대응하는 시스템 아키텍처를 직접 구현해본 경험을 글로 작성하였습니다. 들어가면서.. 이 프로젝트는 Kafka와 Redis의 활용법을 익히고 갑작스럽게 트래픽이 증가하는 경우 대비할 수 있는 로직에 대해서 공부하기 위해서 진행하였습니다. 프로젝트의 가정 Kafka 이벤트 기반 채팅 시스템에서 임계점을 넘는 대규모 FETCH 트래픽이 발생했을 때 redis와 kafka, 스로틀링을 활용하여 트래픽을 잡는다. 시스템 아키텍처 크게 클라이언트(react), ChatServer, PublishServer로 나뉘며 각각 클라이언트는 react를 활용해 채팅방을 구현하였고 ChatServer는 클라이언트에서 메세지나 공감 이벤트가 발생하였을 때 카프카 클러스터.. 2023. 10. 5.
Flutter + Spring Security + OAuth2 + JWT, 로그인 후 앱으로 redirect 하는 방법 문제 Flutter와 Spring Security + OAuth2 + JWT 로그인을 구현하면서 OAuth2 로그인과 access token 발급까지 작동하는데 발급 완료후에 flutter_web_auth를 종료시키고 flutter 앱 화면으로 다시 돌아가게 코드를 짜고 싶었는데 flutter_web_auth에서 400 error만 뜨고 flutter 앱으로 돌아가지 않았다. 해결 플러터의 oauth2를 쉽게 도와주는 flutter_web_auth 패키지는 final result = await FlutterWebAuth.authenticate( url: url.toString(), callbackUrlScheme: "candysignal"); 아래 코드처럼 callbackUrlScheme을 설정하면 자동.. 2023. 8. 23.
영속성 컨텍스트란? 영속성 컨텍스트란 무엇인가? - 영속성 컨텍스트는 JPA의 중요한 특징 중 하나로, 엔티티를 관리하는 가상의 공간이다. 영속성 컨텍스트 특징 1. 1차 캐시 - 영속성 컨텍스트는 내부에 1차 캐시를 가지고 있다. 이때 캐시의 키는 엔티티의 @Id 애너테이션이 달린 기본키 역할을 하는 식별자이며 값은 엔티티이다. 엔티티를 조회하면 1차 캐시에서 데이터를 조회하고 값을 반환한다. 값이 없으면 데이터베이스에서 조회해 1차 캐시에 저장한 다음 반환한다. 이를 통해 캐시된 데이터를 조회할 때에는 데이터베이스를 거치지 않아도 되므로 매우 빠르게 데이터를 조회할 수 있다. 2. 쓰기 지연 - 쓰기 지연은 트랜잭션을 커밋하기 전까지는 데이터베이스에 실제로 질의문을 보내지 않고 쿼리를 모았다가 트랜잭션을 커밋하면 모았던.. 2023. 7. 2.