분류 전체보기 235

전통 락킹(2PL) vs MVCC :동시성 제어 방식 비교

현재 읽고있는 데이터베이스 개론 3판 읽으며 동시성제어에 관한 짤막한 정리해놓기요약표(2PL vs MVCC) 2PL(2-Phase Locking)2PL 전통방식으로 read, write 모두 lock을 가짐, read는 S-lock(공유락), writ는 X-lock(배타락)S-lock은 read와 read끼리는 공유가능하여 트랜잭션중에도 해당 데이터에 대한 접근 가능.하지만 read시에 Write불가하여 X-lock을 얻기위해 read가 끝나도로 기다려야하고, 반대로 write시에도 read할수없도록 하기위해 X-lock이 반납되어 S-lock을 얻을때까지 기다려야한다.S: Shared 공유, X: Exclusive 배타적MVCC(Multi-Version Concurrency Control, 다중버전 동..

공부/DB 2025.11.19

AOP란 무엇이고 필요한 이유, 프록시패턴/데코레이터 패턴

요약코드의 횡단 관심사와 핵심 관심사가 섞이면 코드 중복과 결합도 증가하고 핵심 의도를 파악하기 어려워 가독성 과 유지보수가 저하된다. 따라서 핵심 관심사로부터 횡단 관심사를 분리하기 위한 목적으로 AOP를 적용한다.AOP는 실제 핵심 관심사를 프록시로 감싸 부가기능을 주입하는 구조를 가지고,AOP가 어떤 패턴인지에 대해서는 의도에 따라 달라지는데, 제어가 목적이면 프록시패턴, 부가 기능 확장이 목적이면 데코레이터 패턴으로 본다.이러한 개념을 바탕으로 스프링에서는 @Aspect, @Around 같은 어노테이션을 통해 AOP를 구현할 수있으며, @Transactional또한 프록시 패턴기반의 AOP가 적용된 사례이다.필요한 이유횡단 관심사여러부분에 공통적으로 적용되는 (부가적인) 기능횡단 관심사와 핵심 관..

Spring Framework가 탄생하게 된 배경/ 웹 변천사 및 동작 원리

스프링 탄생에 앞서 웹 역사..웹 초기 정적페이지 기반 사이트초기 인터넷 보급이 크지않았고 발달할 당시에는 간단한 HTML 방식의 정적페이지에서 이미 만들어져있는 css, image 등을 통해 정보를 제공하였다.동적 페이지 기반 사이트그런데 인터넷과 Web이라는 시장이 커지면서 2000년 초 HTML을 통해 정적인 파일들을 화면에 표시하는 정적 페이지 떠나 사용자의 반응에 동작(인터렉션)하는 동적 페이지가 필요했다.CGI이러한 동적페이지를 만들기위해 CGI(Common Gateway Interface)이라는 개념이 등장했다. CGI는 외부 프로그램과 연결해주는 인터페이스(API) 표준 방법 개념이고 이걸 바탕으로 만든 프로그램을 CGI 프로그램 이라한다. 사용자 요청에 웹서버가 파라미터를 통해 CGI로된..

객체지향의 사실과 오해

들어가기전에코드가아닌 글로써 객체지향에 대한 식견을 설명을 정말 잘한 책이라고 생각한다.읽으면서 느낀점이나 기억남는것을 써내려가기때문에 정확한 해석이나 순서는 보장하지않는다. 단순하게 개념의 정의로만 알던 혹은 오히려 클래스와 객체를 만들고 직접 코드를 짜면서도 단순히 모호한 형태의 덩어리처럼이해하던 객체지향을 글을 통해 좀더 깊게 생각하게 되었다. 다독을 통해 처음본것보다 2번째 봤을때 느끼고 이해가는게 다르듯이 한번 보고 나중에 한번더 읽으면 좋을거같다. 해당 책의 일부분만 적은것이고 추후 느낀점을 더 쓸거같다. 이상한나라의 앨리스이책은 이상한나라의 앨리스를 예시를 통해 객체지향의 특색과 의도 목적 등을 다양한 시각으로 설명을 시작하였다.앨리스가 시계를 보며 허겁지겁 달려가던 토끼를 보고 따라가면서 ..

기타/독서 2025.10.20

[TIL] MSA, API Gateway , JAVA, Nodejs 스텍 고민 꿩먹고알먹고

현재 프로젝트를 스프링부트, JPA, mysql 진행중인데숙련도나 아직 이해못한것도 있으니 꾸준히 디벨롭할 생각인데 문득생각든게 java냐 node냐 각 차이, nosql 등 사용경험을 가져갈려면 또다른 프로젝트를 진행하고나 그래야되는데 그건 솔직히 시간적, 스케일적으로 불필요하게 소모하고 낭비해야될게 많기 때문에 적용하기 힘들다. 그러다 문득 든생각이 서버만 다르게하고 도메인이나 기능을 해당 언어나 프레임워크로하면 되지않나 생각하게되었고 결국 그렇게 사용할때 API Gateway를 쓰는거란걸 알았다.지금당장에 구현되어있는 api 앤드포인트 도메인중 관심종목이나 검색 기능의 경우는 간단한 로직이기도 하고 get 호출인 경우기때문에 1차적으론 monolithic 하게 배포하고 운영하고 테스트해보면 되지만 ..

카테고리 없음 2025.03.06

모의주식 거래(트랜잭션, transaction) 절차 고민

백엔드쪽 작은단위 도메인 서비스와 컨트롤러들은 완성했고, 초반엔 익숙치않고 알아야하는 개념들이 있어 진도가 많이못나갔지만 익숙해지니 간단한 컨트롤러나 도메인은 2-3개씩 금방금방 적용한거같다. 검색CRUD, 검색히스토리, 소셜로그인(카카오), 일반로그인, spring security Authenciation filter, 관심종목CRUD, 실시간 종목 주가시세 웹소켓 및 단일 http, 과거 주가시세, 일부 도메인 통합테스트 진행한상태 이제 마지막 피날레 메인 도메인이될 매수,매도 프로세싱을 진행하기전 프로세싱 고민과 진행 후에는 이 예측이 어떻게 달라질지 TIL방식으로 간단히 적어볼려고한다. 매수매도를 진행하기위해선 계좌, 계좌내역, 주문, 주문히스토리 등이 한번에 이루워 져야하기때문에 복잡하고 설계..

TIL 2025.03.03

XSS, CSRF(로그인 쿠키기반, JWT 토큰 기반, refresh token 전략)

로그인기능을 구현할때 쿠키사용시에는 보안관련해서 secure, httponly, csrf.disable, samesite=strict 등 기본 설정이 필요한데이를위해서 기존에 들었던 XSS와 CSRF가 무엇인지 제대로 공부하게되었다. 먼저 세션기반(쿠키사용)으로 관리할지 JWT 토큰기반으로 관리할지 고민하다가 세션기반의 경우는 서버가 직접관리하면서도 확장성(여러 서버가 생긴다면)이를 통합해야하는 개념과 서버에 과부화가 걸릴수도있는 문제등을 생각했을때 해보고싶은 경험도 중요했지만 이부분은 프리티어 기준으로 너무 신경쓰다보면 꼬일거같아서 과부화와 확장성을위해 좀더 편하게 관리하기위해 JWT 기반으로 사용하기로했다. JWT를 사용한다면 보통 access token과 refresh token을 사용하게 되는데,..

공부/CS 2025.02.18

HTTPs사용시 SSL/TLS Handshake 과정(feat. tcp 3-way handshake)

HTTPS의 ssl/tls이 어떻게 동작하는지 원리를 알고싶어서 공부하게되었다. 사실 EC2가 아니더래오 어덯게 동작하는지 알면좋다고생각했다. HTTP와 HTTPS는 무엇이 다르고 HTTPS는 뭐였지? -> Https는 secure이니 http에 보안을 더한거지-> 그래서 무슨 보안을 더한건데? 보안넣고 통신하는거랑 안하고하는거랑 무슨차이인데? ssl인증서는 뭐야? 이렇게 꼬리에 꼬리름 물어가며 생각하게되었던거같다. 그리고 찾아가면서 참 재미있는 주제로 공부했다고 생각도든다. 추후에 내가 머리로 해당 원리를 머리에 그려갈때쯤, 제일 정확하게 확고하고 쉽게 설명한 글을 발견하였다. https://nuritech.tistory.com/25#google_vignette HTTPS 통신 원리 쉽게 이해하기 (F..

공부/네트워크 2025.02.04

AWS IPv4 프리티어제외 유료화

어느순간부터 AWS에서 비용이 청구되었다.현재 프리티어 계정인데 1월 부터 비용이 청구되는것을 보고 뭐지싶었다. AWS에서 각각의 서비스들의 한가지씩은 모두 사용하더래도 무료이기때문에 돈이 나갈일이없어야하는데 1월26일자 기준으로 1월은 2.37달러, 2월은 예상 7달러가 나오길래 혹시모르는 내 설정이나 과도한 트래픽이 문제인가 생각하게되었다. 웹소켓을 통해 실시간 주식정보를 받는것도있고 EC2안에서 프로젝트를 시작할때 약 2700개의 주식정보들을 인메모리에 저장하여 쓰기위해서 DB에서 가져오는데 테스트할때는 프로젝트를 껏다가 배포하고 껏다가 배포하고 하니깐 많은 쿼리가 발생한다고 생각했다. 먼저 떠올린건 로드밸런서 도입이후기때문에 로드밸런서가 공짜가 아닌가? 생각을했고 원래부터 프로젝트로는 비용을 내지..

TIL 2025.02.02

Https 도입과정 DNS 구조 이해(브라우저에 도메인 입력시 과정)

인트로이 주제는 요근래 백엔드 파트로 도메인을 사고 배포하는 과정에서 예전에 제대로 잡히지 않은 부분들이 세팅을 하면서 알게 되어 개인적으로 정리하기 위한 글이라, 해당 개념에 대한 정의나 정해져있는 정보에 대한 글을 쓰지않고 내가 이해한 흐름대로 써내려가고자한다. 상황먼저 상황은 자바스프링부트 프로젝트를 ec2 인스턴스를 생성해서 해당부분에서 build하고 백그라운드로 실행하도록 구현한 상태,postman 및 클라이언트에서 해당 api의 endpoint 별로 데이터가 잘 내려오는지 확인하기위해 public ip address 또는 public dns주소가 필요했고 ec2 인스턴스를 생성시 해당 정보를 제공하기때문에 해당 주소들로 api 테스트하였다. 하지만 http 라는 부분과 ssl 도입이 필요했고 ..

공부/CS 2025.01.28