전체 글 274

[테코톡] 가비지 컬렉션

출처: https://www.youtube.com/watch?v=UJDXXmuMldM&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=117  가비지 컬렉션(GC)이란?참조되지 않는 객체들이 차지하고 있는 메모리를 해제하는 것C, C++에서는 직접 해제해야 했음free();를 작성하는데 리소스 사용Java에서는 JVM에서 자동으로 작업 JVM(Java Virtual Machine)JVM: 자바 파일이 어느 환경에서든지 잘 구동될 수 있도록 함Java 파일 실행 시 필요한 클래스를 로딩해서 Class Loader에 올림Execution Engine이 메모리에 로딩된 코드를 해석Garbage Collector가 이 과정에서 자동으로 실행JVM 메모리 - Runtime Dat..

[테코톡] Lock & JPA Lock

출처: https://www.youtube.com/watch?v=LDi5muN2kgI&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=186  Lock은 무엇일까?데이터 수정을 위한 커넥션이 여러 개 존재할 때 데이터 일관성의 문제가 발생 -> 이를 해결하기 위한 메커니즘  Lock과 Transaction?Lock: 일관성 보장, 동시성 제어 메커니즘트랜잭션: 원자성 보장 (All or Nothing)트랜잭션 격리 수준: 여러 트랜잭션에 대하여 각 트랜잭션 처리 전략구현 방법 중 하나가 락 Lock 전략낙관적 Lock(=애플리케이션 Lock): 트랜잭션 충돌이 발생한 후 조치비관적 Lock(=데이터베이스 트랜잭션 Lock): 트랜잭션 충돌을 가정하고 사용하는 전략 JPA..

Spring & JPA 2025.04.05

7. Concurrency Control

Uncontrolled Sharing Problems1. Lost Update Problem-> T1에 의해 쓰여진 값을 잃게 된다. 2. Uncommitted Dependency Problem-> T2에서 커밋하지 않은 값을 T1이 읽어 올바르지 않은 값을 사용하게 된다. 3. Inconsistent Analysis Problem-> T1이 A를 먼저 읽고 B를 T2보다 나중에 읽게 되면 올바르지 않은 값을 계산한다. SchedulesSerializable Schedule: 결과가 순차적으로 트랜잭션을 실행한 것과 동일한 스케줄Conflict Serializable Schedule: 연산 순서를 재배치해서 직렬 가능하게 만들 수 있는 스케줄이를 보장하는 방법2PLP(2-Phase Locking Prot..

6. Recovery System

Failure ClssificationTransaction failureLogical errors: 내부 오류에 의해 트랜잭션이 끝나지 않음System errors: deadlock 등에 의해 데이터베이스 시스탬이 트랜잭션을 종료시킴System crash: 정전이나 하드웨어 또는 소프트웨어 오류로 인한 시스템 오류Fail-stop assumption: 비휘발성 저장 장치의 내용은 시스템 오류로 인해 망가지지 않는다고 가정Disk failure: 디스크 오류가 저장 장치를 파괴하는 상황 - 감지 가능하다고 가정 Storage Structure & Data AccessPhysical blocks: 디스크에 존재하는 블록Buffer blocks: 메인 메모리에 일시적으로 저장되는 블록디스크와 메인 메모리 간의..

[테코톡] JPA 연관관계 최적화

연관관계란?JPA: Java 애플리케이션에서 관계형 데이터베이스의 데이터를 관리하는데 필요한 객체와 관계를 매핑하는 API엔티티: 데이터베이스 테이블에 대응되는 객체. 각 엔티티는 특정한 데이터 모델을 표현JPA 연관관계: JPA 엔티티 간의 관계를 정의 왜 연관관계를 이해해야 할까?애플리케이션 내 데이터를 효율적으로 구성하기 위해성능 향상, 데이터 무결성, 데이터 관리, 유지 보수, 견고한 아키텍처 등 양방향 @OneToMany항상 부모 측에서 자식 측으로 전이 사용@OneToMany(cascade = CascaseType.ALL) 단방향 @OneToMany부모 자식 연관관계를 관리하기 위한 연결 테이블 생성자식 엔티티에 부모의 외래키를 저장할 수 없어 별도의 연결 테이블 생성연결 테이블로 인한 비효율..

Spring & JPA 2025.04.03

[테코톡] CSR과 SSR

출처: https://www.youtube.com/watch?v=TXzwuaXQN2U&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=181  웹 애플리케이션의 역사MPA(Multi Page Application) : 다중 페이지로 이뤄져 있어 변경사항이 있을 때마다 서버로 페이지 요청새로고침 발생미디어 파일, 인터렉션이 많아져 복잡도가 높아지면서 성능 이슈 발생AJAX의 등장: 필요한 부분만 리로드할 수 있게 해줌SPA(Single Page Application): 단일 페이지로 이루어져 있어 갱신될 부분에 대해서만 데이터 요청새로고침이 발생하지 않음 MPA -> SSR 방식 채택SPA -> CSR 방식 채택 CSR & SSRCSR(Client side Renderin..

CS 2025.04.03

[테코톡] API 중복 호출 해결기

출처: https://www.youtube.com/watch?v=FEP2BzNzoRw&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=24 문제 상황7주년 쿠폰 발급 행사1명의 사용자는 1개의 쿠폰을 발급 받아야 한다.여러 브라우저에서 동시에 동일한 API를 호출한다면?* 프론트엔드 관련 내용 생략  서버에 검증 로직을 추가validateAlreadyIssued 메서드를 통해 사용자가 쿠폰을 발급 받았는지 확인-> DB에 한 사용자가 쿠폰을 여러 개 발급 받은 것을 확인! 2개 요청이 '동시'에 들어온다면?두 개의 메서드가 동시에 DB 트랜잭션을 시작발급 확인 메서드를 통과하게 됨 해결 방법자바 동기화 동구분산락유니크 제약 조건트랜잭션 격리 수준select ... for..

Spring & JPA 2025.04.02

[테코톡] Spring Boot와 AWS를 이용한 이미지 업로드 최적화

출처: https://www.youtube.com/watch?v=r2arbkCTVUk&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=34   이미지를 어디에 올릴까?AWS S3Firebase Storage이미지 전용 서버Database 어떻게 이미지를 업로드할까?MultipartFile: Spring MVC에서 제공하는 인터페이스 활용Stream: 서버를 bypass하여 S3에 업로드Pre-Signed URL: 클라이언트가 S3에 직접 업로드MultipartFile클라이언트는 서버에 파일을 Stream 형태로 전송서버는 파일을 MultipartFile 객체로 임시 디스크에 저장 -> 업로드 완료 후 저장 됨S3에 Stream으로 업로드  서버 디스크 용량을 초과하는 경..

AWS 2025.04.01

[테코톡] DB Replication

영상: https://www.youtube.com/watch?v=7DwxuWyCNHA&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=2 예시 상황쇼핑몰 블랙 프라이데이 이벤트 진행으로 50퍼센트 할인많은 유저가 몰릴 것을 대비하여 취약점 진단(약 평소 5배)WAS와 DB가 하나인 구조로드밸런서와 WAS 여러 개로 개선결과: DB의 CPU 사용률과 메모리 사용률이 100%, 데이터베이스 크래시 발생-> 고가용성(High Availability)이 중요 DB Replication데이터베이스 고가용성을 위한 기술Mysql 8.0, innoDB 기준 개념DB Replication: 한 데이터베이스에서 다른 데이터베이스로 데이터가 동기화되는 것Source(원본 데이터 소장) -..

CS 2025.03.29

[테코톡] MySQL 옵티마이저의 실행계획

유튜브를 통해 매일 조금씩 공부하기...! https://www.youtube.com/watch?v=gcsu7ni3tBc&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH실행계획이란?MySQL 서버 구성MySQL 엔진: SQL 문장 분석 / 최적화 -> 옵티마이저스토리지 엔진: 데이터 저장 / 조회쿼리 실행 과정MySQL 엔진: SQL parser -> SQL 옵티마이저 -> SQL 실행기스토리지 엔진: 데이터 읽기/쓰기실행계획이란?옵티마이저가 결정한 최적의 쿼리 실행방법쿼리 앞에 'EXPLAIN'을 붙여 확인 가능 실행계획 분석테스트 환경 세팅FieldTypeNullKeyidbigintNOPRInicknamevarchar(255)NOUNIageintNOMULaddressvarcha..

CS 2025.03.27