일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 백엔드
- 스프링 배치
- ORM
- Java
- 자바
- 데이터베이스
- vm
- spring boot
- 스프링 부트
- Container
- 가상화
- 배포
- 웹 서버
- 스프링
- 컨테이너
- spring batch
- spring cloud
- CI/CD
- JPA
- Spring
- 도커
- virtualization
- HTTP
- computer science
- 영속성 컨텍스트
- CS
- Spring Security
- 스프링 시큐리티
- mysql
- web server
- Today
- Total
목록Computer Science (25)
개발 일기

드링크리 프로젝트에서는 가게(Store) 정보를 관리하는 과정에서 가게에 등록된 여러 개의 이미지를 저장해야 했고 이를 위해 store_image 테이블을 별도로 분리하여 관리하기로 했다.id이미지의 고유 ID (PK)store_id가게 ID (FK)storeImageUrl이미지 URLstoreImageType이미지 타입 (메뉴, 내부, 기타 등)storeImageDescription이미지 설명이때, 특정 가게(store_id)에 속한 이미지를 빠르게 조회해야 하는 경우가 많기 때문에 MySQL Index를 적용해서 기존 방식과 성능 비교를 해보기로 했다. 조금 더 구체적으로 왜 인덱스를 도입하고자 하는지 정리해보겠다. 왜 인덱스를 도입하고자 하는가?100만 건 이상의 데이터에서 인덱스 기준이 하나도 잡..
프로세스 : 메모리상에서 실행 중인 프로그램스레드 : 프로세스가 할당받은 리소스를 가지고 실제로 실행되는 작업의 단위 (Execution of Unit)시작하기에 앞서 우리가 흔히 프로그램과 프로세스라는 단어를 많이 쓰는데 이 둘을 확실하게 구분하고 갈 필요가 있을 것 같다.💡 프로그램(Program)과 프로세스(Process)의 차이정의실행 가능한 정적인 코드실행 중인 동적인 개체저장 위치디스크(SSD, HDD)에 저장됨메모리(RAM)에서 실행됨상태실행되지 않음 (정적인 상태)실행 중 (동적인 상태)생명주기실행되지 않으면 계속 존재실행이 끝나면 사라짐예제Safari.app, IntelliJ IDEA.app, chrome.exechrome.exe가 실행 중인 상태EX) IntelliJ IDEA → 즉,..
SQLD를 공부했었는데 그때 윈도우 함수에 대해 제대로 이해하지 못하고 통과 해버린 것 같았다.SQL을 공부하면서 뭔가 그룹을 지어서 그 그룹에 대한 통계를 내는 용도로 쓰이는 걸 봤는데 GROUP BY랑 도대체 뭐가 잘 알지 못했다.그래서 도대체 뭐가 다른지 그리고 어떻게 쓰이는지에 대해 간단히 정리해보게 됐다.윈도우 함수(Window Function)SQL의 윈도우 함수란 행과 행 간을 비교, 연산, 정의하기 위한 함수이다. 분석함수 또는 순위함수라고 하기도 한다. 다른 함수들처럼 중첩해서 사용할 수는 없지만 서브쿼리에서는 사용가능하다.❓그래서 GROUP BY랑 뭐가 다른데?가장 큰 차이는 아마 결과(출력) 방식. 즉, 데이터의 유지 방식인 것 같다.조금 더 풀어서 설명해보자면 GROUP BY의 경우..

이전에 컴퓨터 네트워크 시간에 열심히 배웠었지만 한 순간에 까먹어버렸고 중간 중간 개발 공부를 하다보면 튀어나오는 이 용어에 대해 다시 기억을 되살릴 필요가 있다고 생각되어 정리해보게 됐다.OSI 7계층SI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것으로 각 레이어 별로 역할이 다르다.하나씩 뜯어보자.Application Layer(응용 계층)사용자와 직접 연결되어 네트워크 접근을 돕는 계층데이터 전송을 위한 인터페이스 제공사용자로부터 입력 받은 정보를 하위 계층에 전달한다. Presentation Layer(표현 계층)데이터를 응용 계층에 사용하는 표현으로 변환해주는 계층데이터의 인코딩과 디코딩이 이루어 진다. ex) 문자열을 아스키 코드로Session Layer(세션 계층)..

채팅 기능을 구현한 것을 보면 WebSocket 그리고 STOMP와 함께 매번 등장하는 RabbitMQ와 Apache Kafka 같은 메세지 브로커에 대해서 정리해봤다.Message Broker Message Broker(메시지 브로커)는 Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할이며 응용 소프트웨어 간에 메시지를 교환할 수 있게 한다.이 때 메시지가 적재되는 공간을 Message Queue(메세지 큐)라고 하며 메시지의 그룹을 Topic(토픽)이라고 한다.Publisher가 Topic에 맞게 메세지를 가져다 놓기만 하면 각각의 Subscriber는 각자 원하는 Topic의 메세지를 가져갈 수 있는 것이다.Producer와 Consumer가 서..

이전 게시글에서 WebSocket은 한계로 인해 STOMP의 필요성을 알게되었고 해당 프로토콜에 대한 추가적인 이해가 필요하다고 판단하게 되어 정리하게 됐다.STOMP(Simple/Stream Text Oriented Message Protocol)WebSocket과 같은 실시간 메시지 전송 프로토콜에서 사용하는 텍스트(문자) 기반의 메시징 프로토콜WebSocket은 기본적으로 단순히 데이터를 주고받는 통신 방식일 뿐, 그 안에 담기는 메시지의 형식에 대한 정의가 없기 때문에, 메시지를 주고받는 양측이 어떤 형식으로 통신할지를 정해야한다.➜ 이때 STOMP와 같은 서브 프로토콜을 사용하면 메시지 형식과 관련된 표준화된 규약으로 사용한다.주로 메시지 브로커와 클라이언트 간의 통신을 위한 프로토콜로 사용P..

이전 게시글에선 Socket과 Socket 통신에 대해 알아봤고 이번에는 웹소켓에 대해 정리해보겠다.웹소켓(WebSocket)초기의 인터넷 통신 방식인 HTTP를 통해 실시간 통신(Polling, Long Polling, SSE 등)을 구현하는 것에 한계점이 있어 이를 극복하기 위해 등장한 프로토콜이다.클라이언트와 서버 간의 실시간 네트워킹(Real-Time Networking) 및 전이중 통신(양방향 통신: Full-Duplex)을 지원하는 프로토콜로 지속적인 연결을 유지하며 클라이언트와 서버 간의 실시간 데이터 전송을 가능케 한다.HTTP 프로토콜을 사용하여 초기 연결을 설정HTML5에 등장 실시간 웹 애플리케이션을 위해 설계된 통신 프로토콜이며, TCP(Transmission Control Prot..

앞 게시글에서 Polling, Long Polling 그리고 SSE에 대해 정리해봤는데 채팅 기능을 구현하기 위한 웹 소켓에 대해 정리해보고자 한다.우선 소켓(Socket)에 대해 알아보자.소켓(Socket)소켓은 네트워크 상에서 데이터를 송수신하는 두 호스트의 프로세스를 연결하는 종착점➜ 한쪽 프로세스가 데이터를 소켓에 쓰면, 네트워크를 통해 반대쪽 소켓으로 전달된다.OSI 7계층 중 Application Layer에 속하는 프로세스들은 데이터 송수신을 위해 반드시 소켓을 거쳐 Transport Layer으로 데이터를 전달해야한다. ➜ 즉, 소켓은 전송 계층과 응용 프로그램 사이의 인터페이스 역할을 하며 떨어져 있는 두 호스트를 연결해준다.HTTP 통신도 소켓 통신이지만 반대로 소켓 통신을 HTTP 통..