[네트워크] 소켓(SOCEKT) 통신, 3-way handshake의 개념

1. 소켓(Socket)이란 소켓은 떨어져 있는 두 호스트를 연결해 주는 도구로써 인터페이스 역할을 한다. TCP/IP 기반 네트워크 통신에서 데이터 송수신의 앤드포인트이며 앤드포인트는 IP, Port조합으로 이루어진 목적지를 나타낸다. 서버-클라이언트 간 데이터를 주고받는 양방향 연결 지향성 통신으로 지속적으로 연결을 유지하면서 실시간 데이터를 주고받는 데 사용된다. 소켓은 서버 소켓과 클라이언트 소켓으로 이루어지며, 다음은 소켓 간 통신이 이루어지는 과정이다. 1-1. 서버 소켓 클라이언트에서 연결요청이 오기를 기다렸다가 연결 요청이 들어오면 클라이언트와 연결을 맺고 새로운 소켓을 만든다. ...

October 18, 2023 · Jun Kang

[Spring] 스프링 트랜잭션의 개념 및 적용 (@Transactional 사용법)

트랜잭션이란? [Postgresql] - [PostgreSQL] 트랜잭션(Transaction)의 개념 및 사용 스프링에서 제공하는 트랜잭션 ◆ 동기화 (Synchronization) 트랜잭션을 시작하기 위한 Connection 객체를 특별 저장소에 보관하고 필요할 때 쓸 수 있도록 한다. 작업 쓰레드마다 Connection 객체를 독립적으로 관리하기에 멀티 스레드 환경에서도 충돌이 발생하지 않는다. 하지만 JDBC가 아닌 Hiberate 같은 기능을 사용한다면 JDBC 종속적인 트랜잭션 동기화 코드들은 문제가 발생한다. 대표적으로 Hibernate는 Connection이 아니라 Session 객체를 사용하기 때문이다. 이를 해결하기 위해 트랜잭션 관리 부분을 추상화한 기술을 제공하고 있다. ...

October 17, 2023 · Jun Kang

[운영체제(OS)] 스레드 (Thread), 멀티스레드(Multithreaded Programming)란?

두 개의 실행 스레드를 가진 프로세스가 하나의 프로세서 위에서 실행 중인 모습 1. Thread란? CPU 수행의 기본단위이며 특히 프로세스 안의 흐름의 단위이다. 스레드가 수행되는 환경을 Task라고 하며 Thread ID, Program counter, register set, Stack space로 구성된다. 각각의 스레드는 레지스터 상태와 스택을 갖는다. Code, Data 섹션이나 운영체제 자원들은 스레드끼리 공유한다. 스레드의 종류 스레드는 지원 주체에 따라 2가지로 나눌 수 있다. User Threads 유저 스레드는 사용자 수준의 스레드 라이브러리가 관리하는 스레드 라이브러리는 스레드의 생성 및 스케쥴링 등 관리 기능을 제공한다. 동일 메모리에서 스레드가 생성 및 관리되므로 속도가 빠르다. 여러 개의 사용자 스레드 중 하나의 스레드가 시스템 호출 등으로 중단되면 나머지 스레드가 같이 종료된다. (커널이 프로세스 내부 스레드를 인식하지 못하여 해당 프로세스를 대기상태로 전환시키기 때문) 스레드 라이브러리에는 POSIX, Pthreads, Win32 threads, Java threads 대표적이다 Kernel Threads ...

October 17, 2023 · Jun Kang

[AWS] RDS 적정 인스턴스 선택, 비용 최적화

1. RDS란? RDS는 클라우드에서 데이터베이스를 쉽게 설정, 운영 및 확장할 수 있는 완전관리형 오픈소스 관계형 데이터베이스이다. 온디맨드, 혹은 예약형 인스턴스 구매로 유연한 데이터베이스 관리가 가능하며 스토리지 및 메모리 등의 설정에 따라 금액이 달라진다. 2. RDS 비용을 결정하는 요소 DB 인스턴스 가용시간 - 1초 단위로 청구되며 1회 최소 10분 과금 스토리지 (월별 GB당) - DB인스턴스에 프로비저닝 한 스토리지 용량 월별 I/O - 총 스토리지 I/O 요청 수 백업 스토리지 - 자동 데이터베이스 백업 및 모든 데이터베이스 스냅샷과 연결된 스토리지 데이터 전송 - RDS에서 인스턴스를 통한 데이터 송수신 티어별 계산은 여기서 가능 (PostgreSQL 기준) ...

October 16, 2023 · Jun Kang

[PostgreSQL] 쿼리 성능향상 (실행계획 보는 법, 상세 확인방법, Explain의 어떤 지표를 봐야할까?)

1. 실행 계획 확인 --Synopsis EXPLAIN [ ( option [, ...] ) ] 쿼리문 EXPLAIN [ ANALYZE ] [ VERBOSE ] 쿼리문 option 자리에 사용할 수 있는 것들: ANALYZE [ boolean ] VERBOSE [ boolean ] COSTS [ boolean ] BUFFERS [ boolean ] TIMING [ boolean ] FORMAT { TEXT | XML | JSON | YAML } * 이후 설명에서 사용될 테스트 데이터는 아래의 "7. 테스트 데이터 생성" 부분 쿼리 확인 ...

October 12, 2023 · Jun Kang