InnoDB란?InnoDB는 MySQL의 대표적인 트랜잭션 기반 스토리지 엔진(Storage Engine)이다.Each InnoDB table has a special index called the clustered index that stores row data.Typically, the clustered index is synonymous with the primary key. Set Primary KeyWhen you define a Primary key on a table, InnoDB uses it as the clustered index. A primary key should be defined for each table.If there is no logical unique and non-nu..
CORS 에러란 무엇인가?브라우저가 보안상의 이유로 다른 도메인의 리소스 요청을 차단할 때 발생하는 오류입니다. Same Origin과 Cross Origin : 요청 방식에 따른 CORS 발생 여부1. , , , 태그기본적으로 Cross-Origin 정책을 지원합니다. (다른 사이트의 리소스를 접근할 수 있다.) 2. XMLHttpRequest, Fetch API 스크립트기본적으로 Same-Origin 정책을 지원합니다. (서로 다른 도메인에 대한 요청을 제한한다.)브라우저는 기본적으로 자신의 서버 연결만 허용되도록 설정되어 있습니다.fetch('https://third-party-test.glitch.me/check.svg>') .then(response => response.blob()) ..
G1 GC vs Java 23 ZGC1. Survivor Space과거 G1 GC에서는 Eden, Survivor0, Survivor1, Old 공간이 존재합니다.GC가 객체 참조 관계를 추적한 다음, 살아남은 객체들을 이동시켜야 하므로 복사 비용이 발생합니다. Java 23 ZGC에서는 기본값으로 Generation 모드이며, Young, Old 공간만 존재합니다. 2. Move Alive Object과거 G1 GC는 대략 Eden → Survivor 0 → Survivor 1 → Old 순으로 살아있는 객체의 위치가 이동됩니다. Java 23 ZGC에서는 Young → Old 순으로 살아남은 객체의 위치가 이동됩니다.더보기G1 GC 객체 이동 과정objects are allocated in Eden ..
Partitioning TypeVertical PartitioningColumn을 기준으로 테이블을 나누는 방식이다. Article 테이블상황 : 기사 목록 페이지에서 보통 기사 내용까지는 한 번에 보이지 않는다.특정 조건에 만족하는 기사 데이터 조회 (Select)저장 공간에서 조건에 만족하는 모든 데이터를 조회 (모든 컬럼의 데이터 조회)Select 절에 선언된 컬럼 데이터만 클라이언트에게 전달➡️ 저장공간에서 데이터를 읽어올 때 불필요한 데이터(용량이 클 수도 있음)를 조회하는 오버헤드가 존재한다. Column Partition상세 조회 요청 시, Article_Content 테이블을 통해 조회한다.기존 테이블의 성능을 높이고자, Vertical Partitioning을 실행할 수 있다. Hori..
CAP 이론이란CAP 이론에 따르면, 분산 시스템은 일관성(Consistency), 가용성(Availability), 분할 내구성(Partition Tolerance) 3가지 특성 중 2가지 특성만 제공할 수 있다는 이론입니다. 분산 시스템이란동시에 둘 이상의 노드에 데이터를 저장하는 시스템(네트워크)을 의미합니다. Consistency : 일관성어떤 노드에 연결하든 모든 클라이언트가 동시에 동일한 데이터를 볼 수 있음을 의미합니다.데이터가 한 노드에 기록될 때마다 “Write” 연산이 성공된 것으로 간주되기 전에 시스템의 다른 모든 노드에 데이터를 즉시 전달하거나 복제해야 합니다.즉, 데이터 간의 모순, 중복과 같은 문제가 발생하면 안 되며, 분산 시스템에 데이터 연산 작업이 일어나면 모든 시스템에 ..
기존 서버 환경Spring 서버의 Filter 단계에서 HttpServletRequest를 캐싱하여, 이후 다른 레이어에서 로깅이나 기타 작업을 처리할 수 있도록 구성해 둔 상태였습니다.이는 HttpServletRequest의 내용을 한 번 읽으면 다시 읽을 수 없기 때문에, 반복 조회가 가능하도록 캐싱을 해두었습니다. 문제 상황 : IOException yml 파일에 설정한 파일 크기를 초과하는 경우, 의도한 에러가 아닌, 500 에러가 발생했습니다.spring: servlet: multipart: max-file-size: 2MB max-request-size: 20MB Error LogResponse Error Message{ "timestamp": "2025-02-1..
Serialize직렬화는 객체를 바이트 데이터로 변환하는 과정을 의미합니다.Serialization is the process of converting an object’s state to a byte stream. Serialization allows us to save the data associated with an object and recreate the object in a new location Serialization FormatJSON, XML, Binary 등 다양한 포맷으로 변환시킬 수 있습니다. (JSON, XML은 사람이 읽기 쉬운 형태여서 현재 자주 사용되는 포맷입니다.) 스프링에서는 Jackson을 통해 간편하게 객체 → JSON 형태로 변환하여 클라이언트에게 전달해 줍니다. ..
Garbage CollectionJava garbage collection is the process by which java programs perform automatic memory management.➡️ 메모리 자동 관리 When a Java program run on the JVM, objects are created in the heap space, which is a portion of memory dedicated to the program➡️ 생성된 객체는 프로그램 메모리의 일부 Some objects will no longer be needed. To free up memory, the garbage collector discovers and removes these unused ob..