IT 개발 관련/[프로젝트] 8

[예약 구매] 자동화 테스트 툴

자동화 테스트 툴 Docker 설정이 포스팅에서는 Docker를 사용하여 자동화된 회원가입 테스트를 실행하는 설정을 소개합니다. 이 설정은 Python을 기반으로 하며, Docker 컨테이너 내에서 실행됩니다. Dockerfile# DockerfileFROM python:3.9-slimWORKDIR /appCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY . .CMD [ "python", "./http_request_tool.py" ]# 회원가입이 이미 돼있는경우#CMD ["python", "http_request_tool.py", "--skip_registration"] FROM python:3.9-slim: Py..

[예약구매] 상품 상세 조회 캐싱 적용 전과 후

상품 상세 조회 시, 데이터베이스로부터 매번 데이터를 가져오는 것은 성능 저하를 초래할 수 있습니다. 이를 개선하기 위해 캐싱을 도입할 수 있습니다. Product Entity@Entity@Getter@NoArgsConstructor@AllArgsConstructor@Builder@Table(name = "products")public class Product extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) pri..

[예약구매] 재고 감소 동시성 테스트

여러 사용자가 동시에 재고를 감소시킬 때, 재고 수량이 올바르게 감소하지 않거나, 재고가 음수가 되는 등의 문제가 발생할 수 있습니다. 이번 포스팅에서는 스프링 부트와 JPA를 사용하여 재고 감소 기능을 구현하고, 동시성 문제를 해결하는 방법과 이를 테스트하는 방법을 소개합니다. 1. 재고(Stock) 엔티티@Entity@Getterpublic class Stock { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Long productId; private Long quantity; public Stock(Long productId, Long quantity) { ..

MySQL transaction_isolation 문제

에러 상황java.sql.SQLException: Unknown system variable 'transaction_isolation’MySQL 데이터베이스에서 JDBC 연결 시에 발생할 수 있는 문제 MySQL 5.7.20 이후 버전을 사용하면 tx_isolation 대신 transaction_isolation가 존재해야 한다고 합니다. show variables like 'transaction_isolation'; 쿼리를 통해 MySQL 서버에서 해당 변수를 확인해 보았으나 결과가 표시되지 않았고, 해결 방법spring.datasource.hikari.transaction-isolation 속성을 추가하여 문제를 해결할 수 있었습니다. 특히, 다음과 같이 명시적으로 TRANSACTION_REPEATA..

[예약구매] API 문서 작성

내용: 각 API의 요청 방식(GET, POST, PUT, DELETE 등), 엔드포인트, 요청 파라미터, 응답 예시 등을 포함합니다.목적: API를 통해 어떤 작업을 할 수 있는지, 어떤 데이터를 주고받을 수 있는지 명확히 설명합니다.기능MethodURLRequestResponse회원가입POST/api/signupemail : Stringpassword : Stringusername : Stringphone : address : 이메일 인증(고민)  email : Stringpassowrd : String인증번호로그인POST/api/login  비밀번호 변경PUT/api/update-passwordpassword : Stringnewpassword : String 프로필 변경PUT/api/update-..

[예약구매] Docker Compose 로컬 개발 환경 구축

Docker Compose: 개인 프로젝트에서부터 팀 협업까지개인 프로젝트를 진행할 때는 Docker까지 사용할 필요가 없다고 생각합니다. 로컬 같은 환경에서만 실행할 것이기 때문에 복잡한 환경 설정을 할 필요가 없기 때문이다. 그러나 팀 프로젝트 같은 여러 사람이 다루는 협업을 할 경우 각자의 환경이 다르기 때문에 코드가 동일하게 실행되도록 보장하는 것이 중요하다. 이때 Docker를 사용하면 다양한 환경에서 동일한 설정을 유지할 수 있어 매우 편리합니다. Docker Compose의 필요성개인 프로젝트라 할지라도 Docker를 이용해 환경을 구축하면 많은 장점이 있다. 하지만 여러 컨테이너를 실행할 때마다 실매번 명령어를 적어주는 것은 상당히 번거로운 작업이 될 수 있습니다. 실행 순서를 틀리거나 명..

[예약구매] 데이터베이스 선택 과정

데이터 베이스 선택은 프로젝트의 요구사항과 환경에 따라 달라질 수 있습니다. 배경예약 구매 프로젝트는 사용자가 특정 상품을 특정 시간에 예약하여 구매할 수 있도록 지원하는 시스템입니다. 이 시스템은 사용자 관리, 상품 관리, 주문 관리 등 여러 핵심 기능을 포함하며, 대규모 트래픽을 처리하고 데이터의 일관성 및 무결성을 유지하면서 높은 확장성과 성능을 제공해야 합니다. 데이터베이스(DB) 선택은 이러한 요구를 충족시키는 데 중요한 요소입니다. 데이터베이스 선택 고려사항데이터 무결성과 일관성: 데이터베이스는 정확한 데이터 무결성과 일관성을 보장해야 하며, 트랜잭션 롤백 및 복구 기능이 필요합니다.확장성과 성능: 대규모 데이터베이스와 복잡한 쿼리를 처리할 수 있는 확장성과 높은 성능이 요구됩니다.애플리케이션..

[예약구매] 자바 버전 선택

https://www.jetbrains.com/lp/devecosystem-2023/java/ 기준  표를 보면 8, 17, 11 버전 순으로 사용을 많이 하고 있고, 8과 17을 사용하는 점유율이 비슷하다. 자바 17 버전을 선택한 이유1. 장기 지원 (LTS) 버전의 안정성 자바 17은 Long-Term Support (LTS) 버전으로, Oracle 및 OpenJDK 커뮤니티에서 장기간의 지원과 보안 업데이트를 보장합니다. 자바 8과 11에 이어 LTS 버전으로서 안정성과 검증된 성능을 제공하며, 기업 환경에서의 신뢰성을 확보하는 데 유리합니다. JetBrains DevEcoSystem 2023의 자료에 따르면, 자바 17은 점진적으로 사용 빈도가 상승하고 있으며, 안정성과 성능 측면에서 높은 평가..