일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BFS
- til
- 99클럽 #코딩테스트준비 #개발자취업 #항해99 #til
- spring
- 크루스칼
- 자바의정석
- generic class
- jsp
- javascript
- 코테
- 항해99
- JPA
- Java
- DB
- js
- 자료구조
- python
- 알고리즘
- 코딩테스트
- 공개키 암호화
- 개발자취업
- mybatis
- 가상컴퓨팅
- 암호학
- dbms
- sql
- Algorithm
- 코딩테스트준비
- Queue
- 99클럽
- Today
- Total
목록개발 공부/Spring (18)
PLOD

※ 이 글은 '스프링 부트 쇼핑몰 프로젝트 with JPA' 책을 참고하여 적은 글입니다.지금처럼 이커머스를 기준으로 프로젝트를 진행할 때 장바구니(위시리스트)와 상품과 회원은 무조건 존재해야 될 엔티티이다.연관관계객체 지향 프로그래밍의 세계와 관계형 데이터베이스의 세계를 연결해주는 개념객체 간의 관계를 데이터베이스의 테이블과 매핑하기 위한 규칙과 방법을 제공연관관계 매핑의 종류는 다음과 같다일대일(1:1) : @OneToOne일대다(1:N) : @OneToMany다대일(N:1) : @ManyToOne다대다(N:M) : @ManyToMany엔티티를 매핑할 때는 방향성을 고려해야 한다. 테이블에서의 관계는 항상 양방향이지만, 객체에서는 단방향과 양방향이 존재한다.1. 단방향 연관관계단방향 연관관계는 한쪽에..

주요 내용Redis를 통한 상품 정보 캐싱상품 아이디(Key)를 기반으로 상품 정보를 Redis에 캐싱했습니다.Redis는 인메모리 데이터베이스로, 디스크 기반 DB보다 훨씬 빠른 속도를 제공합니다.캐싱을 통해 반복적인 DB 접근을 줄이고, 응답 시간을 단축했습니다.부하 테스트 환경JMeter를 사용해 10,000명의 동시 사용자를 시뮬레이션했습니다.테스트 조건Thread 개수: 10,000Ramp-up 시간: 30초 (10,000명의 사용자가 30초 동안 점진적으로 접속)Loop Count: 1 (각 사용자가 1번만 요청)접근 페이지: [GET] http://localhost:8082/product-service/product/2성능 비교캐싱 전: DB에서 직접 상품 정보를 조회하는 방식.캐싱 후: R..

이커머스 프로젝트에서 선착순 구매와 같은 대규모 트래픽이 예상되는 서비스를 설계할 때, 동시성 문제와 성능 이슈를 해결하는 것이 핵심입니다. 이 글에서는 Redis를 활용해 동시성 문제를 해결하고, 분산 락을 통해 데이터 정합성을 유지하는 방법을 설명합니다. 또한, MySQL과 Redis를 함께 사용해 재고 관리 시스템을 구현한 사례를 소개합니다.1. 동시성 문제란?동시성 문제는 여러 스레드나 세션이 동일한 데이터를 동시에 접근할 때 발생합니다. 예를 들어, 한 상품의 재고를 여러 사용자가 동시에 수정하려고 할 때, 데이터의 정합성이 깨질 수 있습니다. 이를 해결하기 위해 분산 락(Distributed Lock) 기법을 사용합니다.2. Redis를 활용한 동시성 문제 해결Redis는 분산 락을 구현하기에..

MSA작고 독립적으로 배포 가능한 각각의 기능을 하는 서비스들로 구성된 아키텍쳐모놀리식 서비스에서 각각의 비즈니스 로직을 분리하여 개별 프로젝트로 생성한 뒤 가장 앞단에 API Gateway와 같은 분배기를 통해 각 서비스 서버에 요청을 분산하여 관리 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 자향 아키텍쳐서비스는 기능별로 구분서비스의 교체가 쉽다각 서비스의 최적인 개발언어 DB, HW , 소프트웨어 환경을 사용하여 구현각 서비스는 독립적인 배포가 가능MSA 장단점장점서비스별 스케일링 가능서비스별 다른 프레임워크 사용 가능 (서비스 별 독자적 운영)하나의 서비스가 off 되더라도 나머지 동작 가능부분적으로 로직 업데이트 가능단점초기 구성의 난이도시스템이 돌아가지만 특정 서비스가 o..

@PathVariable경로 변수를 표시하기 위해 메서드에 매개변수에 사용된다경로 변수는 중괄호 {id}로 둘러싸인 값을 나타낸다URL 경로에서 변수 값을 추출하여 매개변수에 할당한다경로변수는 값을 반드시 가져야 한다 → 값이 없으면 404에러 출력주로 상세 페이지, 수정, 삭제와 같은 작업에서 리소스 식별자로 사용된다서버에 보내려는 데이터를 URL 경로에 표시할 수 있다. // GET http://localhost:8080/hello/request/star/Robbie/age/95@Controller@RequestMapping("/hello/request")public class RequestController { @GetMapping("/star/{name}/age/{age}") @Resp..