일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Spring
- 항해플러스 회고
- 불친절한SQL프로그래밍
- Java의정석
- Python
- 불친절한 SQL 프로그래밍
- 항해 추천인
- JPA
- 스프링
- 자바공부
- Numpy
- java
- 스프링 핵심원리
- 김영한
- 서블릿
- 항해 추천인코드
- 스프링입문
- 스프링MVC
- 항해플러스 백엔드 7기
- 항해플러스
- 시큐어코딩
- 이것이자바다
- 인프런
- 항해플러스 백엔드
- 자바의정석 연습문제
- 자바의정석
- 자바연습문제
- 제네릭
- 스프링 부트와 JPA
- Secure Coding
- Today
- Total
목록전체 글 (133)
Continuous Challenge
트랜잭션(Transaction)데이터베이스에서 하나의 작업 단위로 실행되는 연산 묶음트랜잭션의 4가지 특징 (ACID 원칙)A (Atomicity, 원자성) : 모든 작업이 하나의 단위로 수행되며, 일부만 실행되거나 중간에 실패하면 전체가 롤백됨.C (Consistency, 일관성) : 트랜잭션이 실행된 후 데이터가 일관된 상태를 유지해야 함.I (Isolation, 고립성) : 동시에 여러 트랜잭션이 실행될 때 각 트랜잭션이 독립적으로 실행되어야 함.D (Durability, 지속성) : 트랜잭션이 성공적으로 완료되면 그 결과가 영구적으로 반영되어야 함.트랜잭션의 기본 연산, 커밋과 롤백커밋(COMMIT)트랜잭션 내에서 실행된 모든 작업을 영구적으로 저장하는 명령어.커밋 이후에는 롤백 불가능 롤백(RO..

드디어 마지막 주차인 10주차 ...끝까지 포기하지 않고 달리기,,,!nGrinder, jmeter, k6 등 여러가지 성능테스트 툴을 비교해보았다.nGrinder와 k6 중 고민하다 k6 선택하여 성능테스트를 해보았다.k6 를 선택한 이유 중 가장 큰 이유는 레퍼런스가 많다는 점과 시각화 도구인 Grafana가 많은 대시보드 템플릿을 가지고 있다는 점이었다. K6와 Grafana 를 사용해서 성능테스트를 해보았다.나에게는 K6와 Grafana 연동 과정부터 순탄하지 않았다.. 성능테스트 설계https://github.com/o3ozzvb/hhplus-ecommerce/blob/dea2a780241923e4ac2bdd8cf324d403821a0e45/docs/performance_test_plan.md..
어느덧 9주차...!피로가 누적되어 점차 지쳐갔고, 정신력으로 버텼던 때인 것 같다..2주 남았다는 사실 하나로 버티고 버텼던 한 주였다.내용 정리 예정 KafkaTransactional Outbox Pattern

늦어졌지만 이제서야 올리는 8주차 회고 아닌 회고..!8주차부터는 문서 작성 과제가 주어지면서 개발을 할 때보다 더 머리가 아팠던 기억이 있다.Index를 활용한 성능 개선더미데이터 생성부터 쉽지 않았던, 인덱스를 활용하여 성능 개선하기다양한 케이스에 대하여 인덱스를 설정해보고 테스트 해보면서, 인덱스 설계에서 고려해야할 점들을 생각해볼 수 있었다.https://github.com/o3ozzvb/hhplus-ecommerce/blob/04e2c333422f30e4e46e06d5bfebff1fa3607c85/docs/index.md hhplus-ecommerce/docs/index.md at 04e2c333422f30e4e46e06d5bfebff1fa3607c85 · o3ozzvb/hhplus-ecomme..
RDBMS (관계형 데이터베이스 관리 시스템)RDBMS는 데이터를 테이블 형태로 저장하고 각 테이블은 행(row)과 열(column)로 구성되며, 테이블 간의 관계(Relationship)를 정의하여 데이터를 효율적으로 저장하고 검색할 수 있다. 릴레이션 스키마(Relation Schema)와 릴레이션 인스턴스(Relation Instance)관계형 데이터베이스에서 릴레이션(Relation)은 테이블을 의미.Relation Schema : 테이블의 구조Relation Instance : 실제 데이터릴레이션 차수(Degree)와 카디널리티(Cardinality)릴레이션의 차수(Degree, 열의 개수)릴레이션(테이블)의 속성(Attribute, 컬럼)의 개수를 의미.릴레이션의 카디널리티(Cardinalit..
데이터정보의 형태.파일컴퓨터 시스템에서 데이터를 저장하는 데 사용되는 단위.파일은 일반적으로 이름을 가지고 있으며 확장자를 통해 어떤 유형의 데이터를 포함하고 있는지 나타낸다.파일시스템을 통해 관리된다.일반적으로 디스크, SSD, 클라우드 등의 저장 장치에 저장된다.읽기, 쓰기, 삭제, 이동 등의 작업을 수행할 수 있다.이러한 파일들을 관리하기 위한 파일시스템의 등장...!파일시스템 파일을 저장 장치에 저장하고 사용하기 위한 일종의 규칙이나 체계단점데이터 중복일관성 부족효율성 문제파일시스템이 데이터를 물리적으로 저장하고 관리하기 위함이라면,응용 프로그램에서 데이터를 효율적으로 사용하기 위한 시스템인 DBMS의 등장!DBMS에 의해 관리되는 데이터들의 집합을 데이터베이스 라고 한다.DBMS데이터를 생성, ..
이번 주차에는 기존 로직을 Redis 의 캐시와 메모리를 이용하여 성능을 개선해보는 시간을 가졌습니다. 그 전에 캐시와 캐시전략에 대한 정리를 하였고, 캐시 스탬피드 현상에 대해서도 알아보았습니다.(github) hhplus-ecommerce/docs/cache.md at main · o3ozzvb/hhplus-ecommerceContribute to o3ozzvb/hhplus-ecommerce development by creating an account on GitHub.github.com 캐시란?캐시는 캐시 저장소에 한 번 구성된 응답 데이터를 저장해두었다가 동일한 요청이 오면 캐시 저장소에 저장되어있는 데이터를 반환하는 것이다. 캐시는 DB에 비해 실시간성은 떨어질 수 있지만, 성능 측면에서는 확..

6주차에는 진행중인 이커머스 서비스 프로젝트의 주요 기능(주로 동시성 제어가 필요한 기능) 분석 및 각 기능별로 적합한 Locking 방법을 찾기 위해 도입 및 비교/분석해보는 시간을 가졌습니다. 자세한 내용은 이전 글에 작성해 두었습니다. (아래 링크 첨부) [항해플러스 7기 백엔드] 6주차 - 주요 기능(포인트 충전/차감, 상품 재고 차감, 선착순 쿠폰 발급)주요 기능 분석1. 포인트 충전사용자가 자신의 계정에 포인트를 충전. 충전 금액이 포인트 잔액에 추가됨.단일 계정 기준으로 충전이 수행 되므로 충돌 가능성 낮음.충전 요청이 동시에 발생할developer-ek.tistory.com이번 글은 -습니다 투가 되어버렸네..각 랑킹방식의 개념 및 구현 방법1. 낙관적 락 (Optimistic Lock)낙..

주요 기능 분석1. 포인트 충전사용자가 자신의 계정에 포인트를 충전. 충전 금액이 포인트 잔액에 추가됨.단일 계정 기준으로 충전이 수행 되므로 충돌 가능성 낮음.충전 요청이 동시에 발생할 가능성은 상대적으로 낮으며, 발생하더라도 포인트는 독립적으로 누적 처리2. 결제 시 포인트 차감사용자가 결제 시 포인트 차감. 잔액 부족 시 차감 불가.단일 계정 기준으로 차감이 수행되므로 충돌 가능성 낮음.3. 주문 시 상품 재고 차감주문 시 선택한 상품의 재고를 차감. 재고 부족 시 차감 불가.동일 상품에 대한 다수의 주문 요청이 동시에 발생할 가능성 높음.4. 선착순 쿠폰 발급쿠폰 발급 시 쿠폰의 잔여수량을 차감하고 사용자에게 쿠폰을 발급함.다수의 사용자가 동시에 요청하여 쿠폰 초과 발급 가능성이 매우 높음.동시성..

4주차가 기능 구현이었다면, 5주차는 4주차에 구현한 코드를 고도화하는 것 이었다. ㅇ 4주차에 구현하지 못한 기능들 구현하기 - 잔액 히스토리 남기기 - 결제 완료 시 주문 상태 업데이트 하기 - 아키텍처에 맞게 파일 다시 정리하기 (DataPlatformService 이동, application -> infrastructure) ㅇ Filter 로 Logging 처리하기ㅇ Interceptor 로 사용자 검증하기ㅇ ExceptionHandler 로 예외 처리하기 ㅇ 동시성 통합 테스트 보완하기 이번 주차에는 3군데에서 동시성 제어에 대한 처리를 했다.1. 잔액 사용2. 재고 차감3. (선착순) 쿠폰 발급모두 비관적 락을 사용해서 처리를 하였다. 앞으로는 지금까지 구현한 코드를 기반으로 계속해서 ..