| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- CS
- Java
- 자바
- 스프링
- 스프링 배치
- Redis
- Spring Security
- 컨테이너
- computer science
- virtualization
- 도커
- 웹 서버
- 해커톤
- JPA
- 영속성 컨텍스트
- 스프링 시큐리티
- CI/CD
- Container
- spring cloud
- 데이터베이스
- 스프링 부트
- vm
- mysql
- ORM
- 배포
- 백엔드
- Spring
- 가상화
- spring boot
- Hackathon
- Today
- Total
목록Computer Science (35)
개발 일기
이전 게시글에선 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 통..
우리가 흔히 사용하는 HTTP 통신은 무상태성(Statelessness) 및 비연결성(Connectionless) 이렇게 두가지 특징을 가진다. 그러나 채팅기능이나 주식/코인 시세를 실시간으로 조회하는 기능들과 같이 실시간 업데이트가 필요한 경우 서로의 통신이 주기적으로 이루어져야 한다. 이러한 양방향 통신(주기적인 통신) 방법으로 4가지를 정리해보겠다.Polling클라이언트가 일정한 주기로 서버에 데이터를 요청하는 방식HTTP 통신을 기반클라이언트는 특정 주기마다 서버에 새로운 데이터가 있는지 요청(Ajax)하고, 서버는 해당 요청에 대해 응답(장점) 단순한 로직으로 구현이 쉽고 무상태성을 유지할 수 있다.(단점) 요청 주기가 길어지면 데이터가 실시간으로 업데이트 될 수 없으며 요청 주기가 짧아지면 그..
채팅 데이터를 저장하기 위해 NoSQL을 사용해야겠다는 판단이 들어 Dynamo DB는 유료라 래퍼런스가 많은 Mongo DB를 한번 부트 프로젝트와 연결하기 위해 Mongo DB에 대해서 정리해보게 됐다.Mongo DB 대용량 데이터를 처리할 때 우수한 성능을 발휘하는 고성능, 고가용성 및 쉬운 확장성을 제공하는 NoSQL 데이터베이스이다.Document-Oriented 지향➜ 데이터를 배열 및 중첩 Document와 같은 복잡한 데이터 유형을 효율적으로 저장할 수 있는 유연한 JSON과 유사한 형식인 BSON(Binary JSON)으로 저장하여 각 문서는 고유의 스키마를 가지므로, 서로 다른 구조의 문서를 하나의 컬렉션에 저장Schema-less관계형 데이터베이스와 같이 트랜잭션(roll-back, ..
OAuth2.0+JWT에서 Refresh Token을 백엔드 단에서 소유하고 있기 위해 Redis에 저장했다. 그냥 다들 그렇게하니까 그렇게 처리해봤는데 정확히 알고 쓴다는 느낌이 없어서 이번 기회에 Redis에 대해 이해해보고자 한다. Redis란?Redis는 Remote Dictionary Server의 약자로 Key - Value 기반의 비관계형(NoSQL) 오픈소스 DBMS다양한 데이터 타입을 제공하여 다양한 기능에 활용할 수 있다. 예를 들어 sorted sets 타입을 활용한 랭킹 시스템도 구현 가능하다.https://inpa.tistory.com/entry/REDIS-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85Collection..
H2 데이터베이스가 소규모 서비스나 단위 테스트에서 주로 사용되어 종종 개발자분들께서 사용하시는걸 본적이 있다.그래서 H2 Database에 대해 간단하게 정리하는 시간을 가져봤다.H2 Database에 대해H2는 Java로 구현된 작고 가벼운 경량형 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)이다.테스트 환경이나 임베디드 데이터베이스로 많이 사용Server Mode/In-memory Mode/Embedded Mode 이렇게 3가지 모드가 있다.3가지 모드에 대해 하나씩 들여다 보자In-Memory ModeH2 데이터베이스 엔진을 직접 설치하지 않고 애플리케이션 내부의 엔진을 사용하는 방식메모리 기반으로 동작하게 되는 모드로 데이터가 RAM에 저장RAM을 사용하다 보니 Server Mode에 ..
라이브러리(Library)란?애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음이다.개발자가 소프트웨어를 만들 때 필요에 따라 원하는 긴으을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 일종의 도구 역할 프레임워크(Framework)란?소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경이다. Frame + Work의 합성어로 작업을 위한 틀을 제공하는 것이다. 정해진 틀에서 개발해야한다는 단점이 있지만 그 틀을 잘 따른다면 효율을 올릴 수 있다는 장점이 있다. Framework와 Library의 차이 - Inversion Of ControlFramework 와 Library 의 차이는 Flow(흐름)에 대한 제어 권한이 어디에 있느냐 차이이다.프레임워크는 전체적인 흐름을..
창업팀에서 로직 요구 사항이 변경되어서 게시글 페이징 조회 시에 댓글 수를 추가적으로 조회해야 했다.내용 중에 쿼리는 다음과 같은데 GROUP BY를 사용하게 됐다.그런데다음과 같은 에러가 발생하면서 500이 터졌다. 로그를 번역해보면 아래와 같았다.Error Code: 1055. SELECT 목록의 Expression #1이 GROUP BY 절에 포함되어 있지 않으며, 열 'woomzip.u.nickname'이 GROUP BY 절의 열에 기능적으로 종속되지 않은 비집계 열을 포함하고 있습니다. 이는 sql_mode=only_full_group_by와 호환되지 않습니다.사실 잘 와닿지 않았다.이 오류는 MySQL에서 ONLY_FULL_GROUP_BY 모드가 활성화되어 있을 때 발생하는데 이 모드는 GRO..