반응형

분류 전체보기 20

[DevOps] TLS/SSL 인증서

SSL란? (Secure Sockets Layer) 1990년대에 넷스케이프가 개발한 웹 서버와 클라이언트(브라우저) 간의 데이터 암호화를 위해 만들어진 보안 프로토콜 현재는 보안 취약점으로 인해 더 이상 사용되지 않음 TLS란? (Transport Layer Security) SSL의 후속 버전으로, 현재는 TLS 1.2 또는 TLS 1.3을 대부분의 웹사이트에서 사용 중 흔히 말하는 SSL 인증서는 대부분 TLS 인증서를 의미 HTTPS => SSL 또는 TLS 인증서가 적용된 HTTPSSL/TLS의 필요성 보안되지 않은 상태이면 ID, 비밀번호, 카드번호 등이 평문으로 전송됨SSL/TLS를 쓰면 통신 내용이 암호화되어 내용이 유출되어도 해독 불가 클라이언트와 서버가 서로 신원 확인 가능(인증서 기반..

DevOps 2025.04.16

[DevOps] 로드 밸런싱(Load Balancing)

로드 밸런싱이란?여러 서버로 네트워크 트래픽을 분산하여 부하를 줄이고 성능 최적화 가능대규모 웹사이트, 애플리케이션, 데이터 센터에서 안정적인 서비스 제공을 위해 필수적으로 사용 중인 기술 로드 밸런싱의 필요성성능 향상: 단일 서버에 모든 요청이 집중되는 것을 방지하고 여러 서버로 트래픽을 분산하여 처리 속도를 높임고가용성 : 특정 서버에 장애가 발생해도 다른 서버가 요청을 처리하여 서비스 중단을 방지확장성 : 서버를 추가하여 트래픽 증가에 유연하게 대응할 수 있음보안 강화: DDoS 공격 등의 부하를 여러 서버에 분산하여 공격에 대한 대응력을 높일 수 있음 로드 밸런서의 유형1. 하드웨어 로드 밸런서물리적인 장비로 구현되며, 고성능이지만 비용이 높음.대표적인 제품: F5 BIG-IP, Citrix Ne..

DevOps 2025.04.01

[데이터베이스] B-Tree 인덱스

📌 인덱스(Index)란?데이터베이스 테이블 내의 데이터가 많은 경우 원하는 데이터를 탐색하는 시간이 오래 걸린다. 데이터가 많은 테이블끼리 조인할 경우 속도가 크게 저하된다. 사전의 목차와 같이 원하는 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 하는 개념을 인덱스라 한다.인덱스를 구현하기 위해 대부분 B-Tree(balanced tree)  또는 해시 테이블 자료구조를 사용한다. 이 글에서는 B-Tree 인덱스의 원리와 구조, 장단점에 대해서 다룬다.📌 B-Tree의 특징1. 균형 유지B-Tree는 항상 균형을 유지하여 모든 리프 노드가 동일한 깊이에 위치함따라서 최악의 경우에도 검색 성능이 O(log n) 으로 일정하게 유지2. 한 노드에 여러 개의 키(key) ..

Database 2025.03.26

[PostgreSQL] 트리거

트리거(Trigger)란?트리거(Trigger)는 특정 이벤트(INSERT, UPDATE, DELETE)가 발생할 때 자동으로 실행되는 기능으로, 특정 테이블에서 데이터가 변경될 때 추가적인 로직을 실행하고 싶을 때 사용로그 기록, 특정 필드 자동 업데이트 등으로 활용 가능 트리거 이벤트INSERT, UPDATE, DELETE 중 어떤 작업이 발생했을 때 실행할지 지정트리거 타이밍BEFORE : 이벤트 발생 전 트리거 실행AFTER : 이벤트 발생 후 트리거 실행INSTEAD OF : 트리거가 실행되면 원래 이벤트를 대신하여 실행 (뷰에서 주로 사용됨)트리거 함수 (Trigger Function)트리거는 단독으로 실행되지 않고, 반드시 트리거 함수를 호출하여 실행-- 트리거 함수 생성-- NEW.키워드를..

Database 2025.03.18

[JAVA] 파일 다운로드 API

📌 개요API가 호출되었을 때 서버에 저장된 파일을 로컬 PC에 내려주는 API서버 내 저장된 경로와 파일명으로 파일 객체를 생성하고, Byte 배열로 변환 후 getoutputstream을 이용해 파일을 내려준다.📌 response 관련 메소드getOutputStreamHTTP 응답을 처리할 때 웹 서버는 클라이언트로 응답을 보내기 위해 HttpServletResponse 객체를 사용 response.getOutputStream()은 이 HttpServletResponse 객체를 통해 HTTP 응답의 바디에 데이터를 쓸 수 있는 스트림을 얻어옴. 이후에 데이터를 이 스트림에 쓰면, 해당 데이터가 HTTP 응답의 바디로 전송됨 일반적으로 파일 다운로드를 위해서는 생성된 파일을 스트림으로 변환한 후 r..

JAVA 2025.03.12

[PostgreSQL] Vacuum

📌 Vacuum이란?PostgreSQL은 MVCC (Multi-Version Concurrency Control)을 사용하여 트랜잭션을 관리하는데, 이를 위해 삭제되거나 업데이트된 레코드(튜플)가 즉시 제거되지 않고 Dead Tuple로 남아 있게 되며, 이를 정리하는 과정을 VACUUM이라 부름.+ Dead Tuple : UPDATE와 DELETE 시 기존 데이터를 즉시 삭제하지 않고 이전 버전으로 남겨둠으로써 생기는 미사용 데이터. 📌 MVCC (Multi-Version Concurrency Control)란?데이터베이스에서 동시에 여러 트랜잭션이 접근할 때 일관성과 성능을 유지하기 위해 사용하는 기법으로 PostgreSQL, Oracle, MySQL (InnoDB), MS SQL Server ..

Database 2025.03.05

[DevOps] NFS(Network File System) 드라이브 마운트

NFS(Network File System)란? Linux/Unix 등에서 사용하는 파일 공유 프로토콜로, NFS를 사용한 네트워크 드라이브 마운트를 통해 외부 서버 디렉토리 내 파일에 접근할 수 있다.NFS의 특징1.빠른 속도 (SMB보다 경량화)2.리눅스 환경 최적화 3.파일 단위가 아닌 블록 단위 전송 (높은 효율성)4.SMB 대비 보안 기능 부족 NFS 동작원리 / 단계NFS(네트워크 파일 시스템) 운영 원칙은 클라이언트와 서버 모델을 기반으로 한다.클라이언트는 네트워크를 통해 서버에서 파일 또는 디렉토리에 대한 접근을 요청하고 서버는 요청된 데이터로 응답한다. 서버의 디렉토리 공유 : NFS 서버가 네트워크의 클라이언트에 하나 이상의 디렉토리를 공유하고, 관리자는 NFS 서버 구성 파일에서 공유..

DevOps 2025.03.03

[데이터베이스/JAVA] Connection Pool

커넥션 풀(Connection Pool)이란?데이터베이스와 연결할 때, 매번 새로운 DB Connection을 생성하는 것은 비용이 많이 들고 속도를 저하시킬 수 있지만 커넥션 풀을 사용하면 일정 개수의 연결을 미리 생성해 필요할 때 가져다 쓰고 사용이 끝나면 다시 풀에 반환하여 재사용할 수 있다. 커넥션 풀의 사용 이유성능 향상: 커넥션을 미리 생성하여 재사용하므로 매번 새 연결을 만드는 시간과 비용을 절약리소스 절약: 데이터베이스 서버의 연결 개수를 제한하기 때문에, 필요 이상으로 많은 연결을 생성하지 않도록 제어 동시 접속 관리 : 많은 사용자가 동시에 접속할 때 일정 수의 커넥션만 유지하여 시스템 과부하를 방지 커넥션 풀의 동작 방식애플리케이션 시작 시, 일정 개수의 DB 연결을 미리 생성애플리..

Database 2025.02.19

[프로그래머스] Level 3. 억억단을 외우자

문제 설명 영우는 천하제일 암산대회를 앞두고 있습니다. 암산보다는 암기에 일가견이 있는 영우는 구구단을 확장하여 억억단을 만들고 외워버리기로 하였습니다. 억억단은 1억 x 1억 크기의 행렬입니다. 억억단을 외우던 영우는 친구 수연에게 퀴즈를 내달라고 부탁하였습니다. 수연은 평범하게 문제를 내봐야 영우가 너무 쉽게 맞히기 때문에 좀 어렵게 퀴즈를 내보려고 합니다. 적당한 수 e를 먼저 정하여 알려주고 e 이하의 임의의 수 s를 여러 개 얘기합니다. 영우는 각 s에 대해서 s보다 크거나 같고 e 보다 작거나 같은 수 중에서 억억단에서 가장 많이 등장한 수를 답해야 합니다. 만약 가장 많이 등장한 수가 여러 개라면 그 중 가장 작은 수를 답해야 합니다. 수연은 영우가 정답을 말하는지 확인하기 위해 당신에게 프..

[프로그래머스] Level 1. 콜라 문제

문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서 1병을 받습니다. 받은 1병과 5병을 받았을 때 남은 1병을 모두 마신 뒤 가져가면 1병을 또 받을 수 있..

반응형