반응형 나의 개발일지/CS11 MySQL의 SELECT ... FOR UPDATE와 TypeORM queryRunner를 이용한 SELECT ... FOR UPDATE 쿼리 실행 MVCC와 Non-Locking Consistent ReadMySQL의 InnoDB 스토리지 엔진은 MVCC를 기반으로 동시성 제어를 처리한다. Non-Locking Consistent Read는 MVCC의 핵심 기능으로, 트랜잭션에서 SELECT 쿼리를 실행할 때 별도의 잠금 없이 데이터 읽기가 가능하다. 이는 동시성 성능을 높이고 여러 사용자가 동시에 데이터를 읽고 쓸 수 있도록 돕는다.일반적인 SELECT 쿼리는 Non-Locking Consistent Read 방식으로 실행되어, 트랜잭션이 시작된 시점 이전에 커밋된 데이터를 읽는다.변경 작업이 일어나면, InnoDB는 변경 전 데이터를 Undo 로그에 백업하고, 읽기 요청이 오면 이 Undo 영역에서 데이터를 반환하여 트랜잭션 일관성을 유지한다... 2024. 10. 25. Github Actions, Nginx, Docker를 이용한 Blue-Green 무중단 배포 현재 회사 서버는 단일 EC2 인스턴스에서 하나의 Docker 컨테이너를 운영하여 작동 중인데 컨테이너 교체 방식 (In-place Deployment)으로 작동하다 보니 약간의 서비스 중단 시간이 발생한다. Github Actions 내역을 통해 매번 1분 이상의 deploy 시간 동안 서비스가 중단 되는 걸 확인했는데 본격적으로 서비스 운영에 들어가게 되면서 1분의 중단 시간도 없애는 게 안정적인 서비스 운영에 도움이 되겠다는 생각에 무중단 배포를 건의했다.물론 백엔드가 나 혼자뿐이라 내가 다 하면 되므로 현 상황에 맞는 방법을 찾아보았다. Docker를 사용한 무중단 배포 전략으로는 대표적으로 롤링 업데이트(rolling update)와 블루-그린 배포(blue-green deployment)가 존.. 2024. 5. 13. HTTP와 HTTPS - 비밀번호 평문 전송은 안전할까? 부트캠프 파이널 프로젝트 때 프론트엔드 레포에 이슈가 달렸었다. 어쩌다 지나가는 분이셨는진 모르겠지만(팀원 그 누구도 알지 못함) 덕분에 http 통신 과정에서의 데이터 암호화에 대해 생각해 볼 기회가 되었다. 결론은 https 통신을 하고 있으므로 평문으로 전달해도 문제가 되지 않을 것 같단 판단에 평문 전달 후 서버에서 단방향 암호화로 데이터베이스에 저장하는 방식을 취했다. https로 클라이언트-서버 통신을 하면 SSL/TLS로 암호화되어 비밀번호는 결국 일반 텍스트가 아닌 암호화된 데이터로 전송되기 때문이다.(이슈에 링크된 암호화 적용 기준은 오른쪽과 같다) ▼ HTTP (HyperText Transfer Protocol)- 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 간 통신.. 2024. 2. 14. 이벤트 기반 프로그래밍(event-driven programming) ▼ 이벤트 기반 프로그래밍(event-driven programming)이란? - 이벤트 발생에 의해 프로그램 흐름이 결정되는 프로그래밍 패러다임 이벤트 컴퓨터 용어로서의 이벤트: 컴퓨터 회로를 구동시키기 위해 발생하는 일 마우스 클릭, 키보드 입력, 화면 터치, 센서 출력, 프로그램 로딩 과거에는 모든 프로그램의 흐름을 시간의 흐름대로 순서대로 해석하려는 경향이 있었다 콘솔로 프로그래밍을 할경우에는 사용자의 입력을 받는 타이밍이 있고 인터럽트(일종의 예외)가 발생하더라도 굉장히 소수였다. 즉 흐름을 예측할 수 있었다는 것이고 예측 하지 못하는 예외들은 소수였다는 것이다. 따라서 그냥 일반적으로 순차적으로 코딩을 해도 아무 문제가 없었다. 문제는 현재는 이 흐름이 별로 맞지는 않다는 것이다. 과거에 흐름.. 2022. 10. 11. CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) ▼ CORS란? 브라우저에서 실행 중인 스크립트에서 시작되는 cross-origin HTTP 요청을 제한하는 브라우저 보안 기능으로, 브라우저와 서버의 도메인이 일치하지 않으면 기본적으로 요청이 차단된다. 이 현상은 브라우저에서 서버로 요청을 보낼 때만 발생하고, 서버에서 서버로 요청을 보낼 때는 발생하지 않는다. 위의 사진처럼 api 서버의 url과 동일한 Domain A의 경우 에러가 발생하지 않으나 Domain B의 경우 CORS 에러가 발생한다. ▼ CORS 문제를 해결하기 위해서는? → 응답 헤더에 Access-Control-Allow-Origin 헤더를 넣어야 한다 (클라이언트 도메인의 요청을 허락하겠다는 뜻을 가짐) (아래의 방법은 nodejs와 express로 api 서버를 개발하는 경우의.. 2022. 8. 14. 기술 표준과 오픈소스, 오픈소스 라이센스 ▼ 기술 표준 · 표준 : 어떤 기술적 산물이 어떻게 만들어지고 어떻게 작동하도록 되어 있는지 명확하고 상세하게 기술한 것. 국가적 기술 표준 워드의 .doc / .docx 파일 포맷과 같이 공식적으로 정해지지는 않았지만 널리 사용되며 생겨난 '사실상의' 표준 ▼ 국가적 기술 표준 예시 ▼ 소프트웨어에서의 표준 예시 ▼ 표준의 중요성 상호 운용성 (호환성) - 같은 기종 또는 다른 기종 간에 정보교환 및 처리를 가능하게 해줌. 비용 절감 - 제조업체, 벤더 등 사업자는 단위 생산·거래 비용을 줄일 수 있으며, 대량생산을 통해 규모의 경제(economy of scale)를 실현하는 것이 가능 무역 활성화, 해외시장 진출 - WTO TBT 협정에 따라 국가 간 무역은 국제표준을 따르고 있으며, 이를 통해 .. 2022. 8. 9. 이전 1 2 다음 반응형