[Back-End] 리버스 프록시 vs 포워드 프록시
·
Back-end
매일메일을 통한하루하루 CS 공부하기 리버스 프록시와 포워드 프록시. 생각해보니 정확하게 개념을 설명할 수 없는 내 자신을 마주하게 됐다.다시 한 번 공부를 통해 성장하자. 포워드 프록시 (Forward Proxy)주로 클라이언트 측에 위치하여, 사용자가 인터넷에 접근할 때 중개자 역할을 한다. 예를 들어, 회사 내부 네트워크에서 외부 웹사이트에 접근하려고 할 때, 포워드 프록시 서버를 통해 요청이 전달됨.이 과정에서 사용자의 실제 IP 주소는 숨겨지고, 프록시 서버의 IP 주소가 대신 사용된다. 핵심 기능익명성 제공 : 실제 IP를 숨겨 개인정보 보호와 보안 측면에서 장점을 제공함.캐싱 : 자주 요청되는 웹페이지나 파일에 대해 캐싱하므로써 네트워크 bandwidth를 절약할 수 있음.보안 강화 기능 :..
[Back-End] CORS란 무엇인가요?
·
Back-end
매일메일을 통한하루하루 CS 공부하기 CORS란?Cross Origin Resource Sharing : 출처가 다른 곳의 리소스를 요청할 때 접근 권한을 부여하는 매커니즘. 즉, 리소스를 주고 받는 두 곳 (프론트엔드 & 백엔드)의 도메인이 다르면, 출처가 교차한다고 한다. 이 출처는 프로토콜 + URL + 포트까지 전부 포함하는 개념이다. 만약 클라이언트의 출처가 허용되지 않았다면, CORS 에러가 발생할 수 있다. 즉, 브라우저에서 특정 리소스를 요청할 때 발생하는 에러라는 것! CORS는 왜 필요한가?CSRF (Cross-Site Resource Forgery) : 피해자의 브라우저에서 다른 애플리케이션으로 가짜 클라이언트 요청을 전송하는 공격 이 CSRF를 예방하기 위해 SOP(동일 출처 정책,..
[Back-End] 갭락(Gap Lock)과 넥스트키 락(Next-Key Lock)
·
Back-end
매일메일을 통해하루하루 CS 공부하기 앞서 배운 내용에서 MVCC 동시성 제어 방식에서 Gap Lock과 Next-Key Lock을 통해 Phantom Read를 방지할 수 있다고 배웠었다. 그렇다면, 각 Lock과 Phantom Read란 무엇일까? 제대로 파헤쳐보자  Phantom Read란 무엇인가트랜잭션이 동일한 조건의 쿼리를 반복 실행할 때, 나중에 실행된 쿼리에서 처음에는 존재하지 않았던 새로운 행이 나타나는 현상. 읽기 일관성을 유지하는 과정에서 발생할 수 있는 문제로, 데이터의 삽입/삭제가 다른 트랜잭션에 의해 이루어질 때 발생함.-- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- ..
[Back-End] DBMS에서 동시성을 제어하는 방법
·
Back-end
매일메일을 통해하루하루 CS 공부하기! DBMS의 대표적인 데이터 동시성 제어 방식으로는 MVCC(Multi-Version Concurrency Control)와 LBCC(Lock-Based Concurrency Control)이 있다. 처음 들어보는 말들이다.. 차근차근히 정리하며 공부해보자. 동시성 제어동시성 제어가 뭔지부터 파악할 필요가 있다. 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 DB를 보호하는 것이다. 일반적으로, 동시성을 허용하면 일관성이 낮아지게 된다. (반비례 관계) DBMS는 동시성 제어를 위해 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정하는 기능도 제공한다. 동시성 제어는 동시에 ..
[Back-End] 웹사이트에 처음 접근했을 때 발생하는 일련의 과정
·
Back-end
매일메일을 통한하루하루 CS 공부하기! 사용자가 웹페이지를 접속할 때 무수히 많은 작업들이 일어난다.이 부분에 대해 정확히 짚고 넘어가는 것이 네트워크 공부에 많은 도움이 될 것이다. 웹 페이지 접속 플로우예를 들어, 사용자가 www.google.com을 입력하면, 브라우저는 HTTP 프로토콜을 사용해 구글 웹서버와 통신하려고 한다.HTTP는 OSI 7계층 중 애플리케이션 계층에서 동작하는 프로토콜이다. 이때, 브라우저는 도메인 네임에 대한 IP 주소를 알아야하기 때문에, DNS (Domain Name System) 서버에 요청을 보낸다.이 질의 과정 또한 Application Layer에서 이루어지며, DNS 서버는 해당 도메인에 대한 IP주소를 응답한다. IP 주소를 얻은 후, 브라우저는 구글 서버와..
[Back-End] 스레드, 프로세스, 코어의 수는 많을수록 좋을까요?
·
Back-end
매일메일을 통한하루하루 CS 공부하기!  스레드, 프로세스, 코어의 수가 많을수록 시스템 성능이 향상된다고 생각할 수 있지만, 실제로는 그렇지 않을 확률이 크다. 스레드가 많으면?OS가 스레드 간 Context Switching을 자주 수행하여 CPU 리소스가 스레드 관리에 많이 소모됨스레드가 많아지면 Synchronization이나 State 관리가 복잡해짐 → 버그 발생률 증가실제 작업 수행 효율이 떨어질 수 있으며, 많은 스레드가 동시에 실행될 경우 Memory, Cache, Lock 등의 자원을 경쟁하게 되어 성능 저하나 Dead Lock 발생 가능. 프로세스가 많으면?각 프로세스는 독립적인 메모리 공간을 가짐따라서 많은 프로세스가 동시 실행 시 Memory Utilization이 급격하게 증가...
[회고록] IBK기업은행 동계 체험형 인턴십 서류 합격 & 면접 후기
·
회고록
IBK기업은행, 국민은행, 우리은행 총 세 곳에 동계 체험형 인턴십에 서류를 넣게 되었다. 기은에서 썼던 자소서가 인생 첫 자소서였고 AI 역검도 진짜 너무 떨어서 제대로 말 못했기에 그냥 망했다고 생각하려고 했는데 갑자기 서류 합격? 진짜 이 때부터 머리가 벙찌면서 전두엽에 엄청난 도파민이 돌기 시작했다.이 때부터 면접 스터디는 어떻게 하는거지? 엄청 검색하고 주변에 기은 인턴했던 지인들의 말을 하나 하나 다 경청하기 시작했다.  그래서 시작하게 된 오픈채팅방 면접 스터디 모여서 각자 토론 주제를 골라 찬반 근거 자료를 수집해오고 이를 통해 마인드맵을 그리며 PT 연습과 3대3 모의 토론도 진행해보았다. 토론을 하면서 서로 쿠션어를 다채롭게 사용해보고 억양이나 상대방과의 눈빛 교환도 매우 중요하다는 등..
[Back-End] Shared Lock과 Exclusive Lock 이란?
·
Back-end
매일메일을 통해하루하루 CS 공부하기! 공유 락과 배타 락은 데이터 일관성과 무결성을 위해 사용되는 락 유형이다. 공유 락 (Shared Lock)이란?읽기 락 (Read Lock)이라고 부르며, 공유 락이 걸린 데이터는 SELECT 연산만 가능하며, 쓰기 (UPDATE, DELETE) 연산은 불가능하다. 공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 Shared Lock을 획득할 수 있지만, Exclusive Lock은 획득할 수 없다. 즉, 공유 락을 사용하면 트랜잭션 내에서 조회한 데이터의 무결성을 보장. SELECT * FROM table_name WHERE id = 1 FOR SHARE;  배타 락 (Exclusive Lock)이란?쓰기 락 (Write Lock)이라고 부르며, 배타 락을 ..