Ch.2 대규모 AI 시스템 설계 프로젝트 S.A
·
카테고리 없음
API 명세서https://www.notion.so/teamsparta/API-4919a95833be44d2bf9228a1c9b5e1b9 API 명세서 | Notion🧾 Basic Response 구조teamsparta.notion.site    테이블 명세서https://www.notion.so/teamsparta/DB-2f6f5a7373bf4fd0bed1e5f573d04f1e DB 설계 | Notion🔶 테이블 명세teamsparta.notion.site ERD  인프라 설계서
OSIV (Open Session In View)
·
카테고리 없음
OSIV (Open Session In View)영속성 컨텍스트를 HTTP 요청 시작부터 응답까지 유지하는 기능  여기서 View라는 개념이 어떤건지 궁금했다.REST API 등 View가 없는 서비스에서도 이 용어를 그대로 사용한다고 한다View라기보다는 클라이언트에 대한 응답이 완료되는 시점을 의미HTTP 응답이 끝날 때까지 영속성 컨텍스트를 유지하는 개념으로 확장 OSIV의 View는 역사적인 용어이며 현재는 클라이언트에 대한 응답 완료 시점으로 이해하면 된다고 한다.  spring.jpa.open-in-view=?JPA를 사용하면 yml에서 위의 값을 true,false로 설정할 수 있다. 기본 설정값은 true이다. spring.jpa.open-in-view=true이 설정이 true 라면 h..
@Slf4j
·
TIL
SLF4J(Simple Logging Facade for Java)SLF4J는 인터페이스고, 그 구현체로 Logback같은 로그 라이브러리를 선택하면 된다. 실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다. 주요 특징컴파일 타임이 아닌 런타임에 구현체가 결정됨클래스패스에 있는 구현체를 자동으로 찾아서 바인딩여러 구현체가 있을 경우 정해진 우선순위에 따라 선택구현체 교체가 용이함 (의존성 변경만으로 가능)OCP, DIP가 잘 적용되었다고 생각하는 예시 동작과정로그를 작성하면 SLF4J API를 통해 로그를 요청하게 된다.클래스패스에 사용가능한 로깅 구현체(바인딩)를 확인선택된 로깅구현체를 통하여 출력 (기본적으로 Logback 사용)
트랜잭션 격리수준 (Repeatable Read)
·
DB
트랜잭션 아이솔레이션 레벨 https://bocho-developer.tistory.com/11 데이터베이스 트랜잭션 격리수준트랜잭션이란? 그동안 트랜잭션에 많은 관심을 기울였고 한번 정리할때가 되어 글을 작성해 보는 시간이다. 우선 트랜잭션은 데이터베이스에서 하나의 기능을 수행하기 위한 작업의 단위이다.bocho-developer.tistory.com 작년에 이부분에 대해 간단히 정리했고 부족한점들이 보였다.이번 글은 Repeatable Read 에 대해 좀 중점적으로 정리한 글이다. 리피터블 리드 (Repeatable Read)동일한 쿼리를 여러번 조회해도 같은 결과 값을 얻게 된다. 하지만, SERIALIZABLE과 다르게 행이 추가되는 것을 막지는 않는다. 이로 인해 팬텀 리드 현상이 발생할 수 ..
[Jenkins] 용량 부족 - EBS 볼륨 연결
·
이슈
문제 발생젠킨스 파이프라인 테스트를 하며 빌드하던 도중 빌드가 제대로 진행되지 않는 상황이 발생했다.  젠킨스가 설정한 최소 필요 공간은 1GB인데 현재 남은 공간은 733MB밖에 되지 않아 발생하는 오류였다.   이전 빌드기록과 이미지들, 도커 컨테이너들을 지워도 실제로 몇번 빌드하니 용량은 금세 차올랐다. /dev/root 용량이 꽤 많이 찼다애초에 인스턴스 스토리지 볼륨을 적게 설정한것이다. 그동안은 가벼운 프로젝트만 몇번 테스트해서 문제가 없었던거 같다.  방법 고민고민이였다.1. 기존데이터 백업 후 인스턴스를 볼륨을 다시 생성해 마이그레이션2. 새 인스턴스에 처음부터 시작3. 볼륨 연결 이 세가지 정도를 생각했는데 현재 문제해결에는 볼륨 연결을 하는편이 가장 간단하면서 적합하다고 생각하여 적용했..
카프카 쿠폰 선착순 발급, k6 부하테스트
·
카테고리 없음
카프카 설정configpackage com.inflearn.kafka.config;import org.apache.kafka.clients.consumer.ConsumerConfig;import org.apache.kafka.clients.producer.ProducerConfig;import org.apache.kafka.common.serialization.LongDeserializer;import org.apache.kafka.common.serialization.LongSerializer;import org.apache.kafka.common.serialization.StringDeserializer;import org.apache.kafka.common.serialization.StringSer..
HahsMap, HashTable, ConcurrentHashMap
·
TIL
HahsMap-동기화보장안됨-null한번 허용동기화 처리를 하지 않기 때문에 데이터를 탐색하는 속도가 빠르다. 결국 HashTable과 ConcurrentHashMap보다 데이터를 찾는 속도는 빠르지만, 신뢰성과 안정성이 떨어진다. Hash Table, ConcurrentHashMap동기화 보장null 허용x성능은 ConcurrentHashMap이 더 우수 Hash Table, ConcurrentHashMap 의 차이점Hash Table메소드전체에 synchronized 키워드가 붙어 있다.  해당 키워드는 메소드 전체에 락을 건다.그래서 멀티 쓰레드 환경에서도 데이터의 무결성을 보장한다.안전하지만 성능이 느려진다. ConcurrentHashMap ConcurrentHashMap은 메소드 전체가 아닌 부..
트랜잭션 예외별 롤백,커밋
·
인프런 강의
스프링은 체크예외(Exception) 발생 시 커밋하고, 언체크(RuntimeException) 예외는 롤백하게 된다.   스프링 기본적으로 체크 예외는 비즈니스 의미가 있을 때 사용하고, 런타임(언체크) 예외는 복구 불가능한 예외로 가정 한다.Exception : 비즈니스 의미가 있을 때 사용RuntimeException :  복구 불가능한 예외   비즈니스예외란 무엇일까?예시로 주문로직에서 주문은 잔고부족으로 주문이 실패했다면? 주문상태를 대기로 처리하고 주문정보를 저장해야한다.어떠한 심각한 복구불가한 문제가 아닌 비즈니스 상황에서 충분히 일어날 수 있는 예외라고 이해하면 좋을거 같다.1. **정상**: 주문시 결제를 성공하면 주문 데이터를 저장하고 결제 상태를 `완료` 로 처리한다.    2. **..