본문 바로가기

분류 전체보기

(67)
DB Bulk Insert, Jmeter 부하테스트 안녕하세요, 오늘은 Issue Tracker 프로젝트를 진행하면서 10만건 이상의 데이터에서 비정상적으로 느린 API 응답을 어떻게 개선했는지 기록을 공유하고자 포스팅을 작성합니다. Spring Data JDBC로 Bulk Insert하기 우선 부하 상황을 만들기 위해서 Spring Data JDBC로 Dummy Data를 Insert했습니다. 이 때, Spring Data JDBC의 saveAll 메서드는 기본적으로 객체 하나마다 개별적인 INSERT 쿼리를 실행합니다. 이는 saveAll 메서드가 객체 컬렉션의 각 요소를 개별적으로 처리하고 영속화하기 때문입니다. 각 객체는 개별적으로 삽입되며, 객체의 상태에 따라 개별적인 INSERT 쿼리가 생성됩니다. 객체마다 I/O가 실행되면 속도가 굉장히 느려..
해싱과 암호화를 이용한 개인정보 보호 - SHA256, RSA 알고리즘 암호화 알고리즘에 대해서 학습하다가 해싱과 암호화에 대해서 잘못 이해하고 있었던 개념들이 있었다는 것을 깨달았습니다. 먼저 해싱에 대해서 설명하겠습니다. 해싱(단방향 암호화)? 해싱은 어떤 데이터를 고정된 크기의 고유한 값, 즉 '해시값'으로 변환하는 과정입니다. 이때 변환 과정은 단방향입니다. 즉, 해시값에서 원래의 데이터로 되돌릴 수 없기 때문에 단방향 암호화라고도 합니다. 고정된 크기의 고유 값으로 만들기 위해서 해시 함수를 사용하는데, 해시 함수는 어떤 길이의 데이터든 간에 일정한 길이의 해시값으로 출력합니다. 여기서 나머지 연산의 개념이 적용됩니다. 해시 함수는 각 데이터를 정해진 수로 나눈 나머지 값으로 계산합니다. 그 결과로 생성된 나머지 값이 곧 해당 데이터의 해시값이 됩니다. 나머지 연산..
[프로젝트] Issue Tracker 회고 코드스쿼드에서 한 달간 진행하던 프로젝트가 끝났습니다. 끝난 기념으로 회고를 작성해봅니다..(기술을 곁들인) 처음 진행하는 팀 프로젝트라 걱정도 되었지만 정신없이 만들다보니 4주가 어떻게 흘러갔는지 모르겠습니다. 4주라는 시간의 제약 때문에 처음 프로젝트를 시작할 때부터 모든 것을 만들지 못한다는 것은 알고있었지만 막상 끝난다고 생각하니 아쉬운 생각이 많이 듭니다. 가장 부족하게 느꼈던 부분은 기능 구현에 우선 순위가 밀려 실행하지 못했던 것들입니다. 서비스를 개발하는데 있어서 돌아가는 코드가 가장 중요하기에 우선 순위가 밀렸다고는 하지만 개인적으로 아주 중요하게 생각하는 부분이기에 더욱 아쉽습니다. [1주차] - 그라운드 룰 정하기, API, ERD, UML 다이어그램 작성 첫 주에는 Ground Ru..
MAC 주소와 ARP 프로토콜 MAC 주소란 무엇인가요? IP 주소와 비교하기 IP 주소와 MAC 주소는 공통적으로 네트워크에서 다른 장치를 식별하기 위한 주소라는 점에서는 공통적입니다. IP 주소 논리적 주소, 혹은 인터넷 프로토콜 주소라고 합니다. 네트워크 상에서 컴퓨터, 기타 디바이스를 식별하는 고유 주소입니다. MAC주소와 차이점은 물리적 주소가 아니기 때문에 IP 주소에 연결된 네트워크 하드웨어는 언제든지 변경될 수 있습니다. IP주소는 IPv4와 IPv6 방식이 있는데, 일반적으로 사용되는 IPv4는 32비트 주소로 255.255.255.255와 같이 표현됩니다. IP주소는 인터넷이나 로컬 네트워크와 같은 네트워크를 통해 데이터 패킷이 올바른 목적지 네트워크에 도달하게 하는 라우팅 역할을 수행합니다. MAC 주소 물리적 주..
Lock을 이용한 동시성 제어 및 2PL(two phase locking) 안녕하세요. 오늘은 데이터베이스에서의 Lock에 대해 이야기하려 합니다. 여기서는 Lock의 종류, 호환성, 그리고 두 번째로도 Lock을 사용하면서 발생할 수 있는 이상현상에 대해 알아보겠습니다. 또한, 이러한 문제를 해결하기 위한 방법 중 하나인 2PL Lock에 대해서도 자세히 알아보겠습니다. Lock의 종류 데이터베이스에서 Lock은 데이터의 동시 접근을 관리하고, 데이터의 일관성을 유지하기 위해 사용됩니다. 다음은 데이터베이스에서 사용하는 Lock의 주요한 두 가지 종류입니다. Shared Lock (S-Lock, 혹은 Read Lock): 이 Lock은 데이터를 읽는 작업(read)에 사용됩니다. Shared Lock을 설정한 트랜잭션은 데이터를 읽을 수 있지만, 변경할 수는 없습니다. 변경을..
반효경 운영체제 - 10. Disk Management & Scheduling Disk Management 디스크에서 저장하는 최소 단위 - 섹터 디스크 외부에서 관리하는 단위 - logical block Disk structure logical block 디스크 외부에서 보는 디스크의 단위 정보 저장 공간들 주소를 가진 1차원 배열처럼 취급 정보를 전송하는 최소 단위 Sector Logical block이 물리적인 디스크에 매핑된 위치 Sector 0은 최외곽 실린더의 첫 트랙에 있는 첫 번째 섹터이다. 부팅과 관련된 정보가 저장 Disk Management physhical formatting(low-level formatting) 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정 각 섹터는 header + 실제 데이터 + trailer로 구성 header와 trai..
SOP, CORS - CORS 이슈 해결하기 이번 포스팅에서는 웹 애플리케이션의 보안의 핵심 개념인 SOP(Same Origin Policy)와 CORS(Cross-Origin Resource Sharing)에 대해서 살펴보고, . 이 글에서는 SOP와 CORS에 대해 알아보고, 이들이 웹 보안에 어떻게 기여하는지 살펴보겠습니다. Same Origin Policy (SOP)란? SOP는 웹 보안을 위한 가장 기본적인 정책 중 하나입니다. SOP는 브라우저에서 실행되는 스크립트 언어를 통해 동작하며, 웹 페이지의 자원에 접근하는 규칙을 정의합니다. SOP는 동일 출처(Origin)에서 로드된 문서나 스크립트만이 서로 상호작용할 수 있도록 제한합니다. Origin이란 아래 그림처럼, 프로토콜, 호스트, 포트로 구성되며, Origin이 동일하지 않으면 ..
반효경 운영체제 - 9. File System File and File System file 연관된 정보의 집합 - A named collection of related information 일반적으로 비휘발성의 보조기억장치에 저장 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해줌 Operation create, read, write, reposition(파일 포인터의 위치 변경), delete, open(파일의 메타데이터를 메모리에 올려놓는 작업), close File attribute(file metadata) 파일 자체의 내용이 아닌 파일을 관리하기 위한 각종 정보들 파일 이름, 유형, 저장된 위치, 파일 사이즈 접근 권한 (읽기/쓰기/실행), 시간 (생성/변경/사용), 소유자 등 File System 운영체제..