동시성을 통한 다중 접속자 관리
동시성을 통한 다중 접속자 관리 동시성(Concurrency)이란 하나의 코어에서 여러 스레드가 번갈아 실행되면서 동시에 동작하는 것처럼 보이게 만드는 개념이다. 실제로는 한 시점에 하나의 스레드만 실행되지만 매우 빠른 전환이 일어나기 때문에 동시에 처리되는 것처럼 보인다. 이 과정에서 스레드 간 전환이 발생하는데 이를 Context Switch...
동시성을 통한 다중 접속자 관리 동시성(Concurrency)이란 하나의 코어에서 여러 스레드가 번갈아 실행되면서 동시에 동작하는 것처럼 보이게 만드는 개념이다. 실제로는 한 시점에 하나의 스레드만 실행되지만 매우 빠른 전환이 일어나기 때문에 동시에 처리되는 것처럼 보인다. 이 과정에서 스레드 간 전환이 발생하는데 이를 Context Switch...
HTTPS란 HTTPS는 Hypertext Transfer Protocol Secure의 약자로 HTTP 프로토콜에 SSL이 추가된 프로토콜이다. 기존 HTTP는 데이터를 암호화하지 않고 전송하기 때문에 중간에서 데이터가 노출될 수 있다. 반면 HTTPS는 SSL을 이용해 데이터를 암호화하여 전송하므로 보안성이 높다. HTTPS를 사용하려면...
배포_OAUTH2 + Security back과 front가 분리되기 전에는 <a href="/oauth2/authorization/kakao">Kakao</a> 위와 같이 설정만 해도 소셜 로그인을 하는데 문제가 없었다. 문제는 back과 front를 분리하면서 해당 url을 페이지로 변환하려고 하면서 에러가 발생했다. ...
배포하면서 생긴 채팅 관련 오류 모음 집(+SSE) 로컬에서 https를 적용했을 때는 문제가 되지 않았으나 배포하면서 발견한 에러들을 정리해봤다. 1. 공통 JS와 페이지별 기능 JS 채팅 관련 js를 작성한 곳이 chat.js이고 여러 페이지에서 공통적으로 사용한 변수들과 메소드를 모아놓은 곳이 global.js다. global.js에...
Connection timed out: connect. DB를 연결하려고 보니 Connection timed out: connect. 에러가 떴다. 이 글을 보고 EC2의 보안그룹을 체크해봤다. 유형 : MYSQL, 포트 범위 : 330으로 설정은 했으나 소스 부분에서 팀원이 “내 IP”만 허용해둬서 나는 접근을 할 수가 없었다. 그...
Redis 이 전 글에서 redis를 application.properties에 아래와 같이 설정했다. spring.redis.host = host.docker.internal host.docker.internal은 Docker for Windows 및 Docker for Mac에서 로컬 호스트를 가리키는 특수한 DNS 이름이다. 따라서 Li...
Proxy • em.find() vs em.getReference() • em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 • em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 → DB 쿼리는 안나가는데 객체는 조회되는 걸 말한다. 아래는 기본 코드 EntityManagerFactor...
채팅 정리 채팅 기능을 구현하면서 그 과정들을 정리했었는데 기존에 정리했던 것 일부분을 넣어 요약 정리를 해봤다. WebSocket & WebSocket Emulation HTTP 프로토콜의 특징 중 중요한 부분 중 하나는 비연결성이다. HTTP는 비연결성이라는 특징을 가지고 있어서 연결을 끊어버린다. 이를 해결하기 위한 방법이 Pol...
채팅 HTTPS 적용하기 server와 client 간의 websocket 연결은 HTTP 프로토콜을 통해 이루어진다. wss 란 https 처럼 ws 프로토콜에 데이터 보안을 위해 SSL을 적용한 프로토콜이다. port는 옵션이지만 ws스키마는 기본적으로 80포트를, wss스키마는 443을 사용한다. SSL 적용하기 자바는 두 가지의 인증서...
11 → 17 변경 Java 버전은 17인데 프로젝트의 JDK는 11로 되어있었고 spring boot 버전은 2.x였다. 그래서 spring boot는 3.x로 프로젝트 JDK는 17로 통일 시키기로 했다. build.gradle plugins { id 'org.springframework.boot' version '3.0.1' } ...