전체 글(43)
-
WebFlux + MongoDB + SSE 로 채팅만들기
이번 시간엔 스프링 WebFlux와 NoSQL인 MongoDB 그리고 Server-Sent-Event, SSE 프로토콜을 이용하여 채팅 서비스를 만들어 보겠습니다. WebFlux란? Spring WebFlux는 Spring 5에 추가된 모듈로 Reactive-stack framework이며 Non-blocking에 reactive stream을 지원합니다. 적은 리소스로 효율을 극대화할 수 있다는 장점이 있습니다. 또한 스프링과 완벽하게 통합되며 비동기 non-blocking 메시지 처리가 가능합니다. 하지만 오류 처리가 복잡하다는 것과 자료가 부족하다는 단점이 있습니다. MVC와 WebFlux를 같이 쓸 순 없습니다. 때문에 Spring의 Reactive Stack과 Servlet Stack 중 선택을..
2022.09.04 -
@Transactional에 대하여
트랜잭션이란? DBMS에서 기능을 수행하기 위한 작업 혹은 상호작용의 단위이다. 즉 여러개의 쿼리를 하나로 묶는 단위이다 begin과 commit을 자동으로 수행해주기도 하며 예외 발생시 rollback 처리를 자동으로 수행한다. 먼저 트랜잭션에 대하여 간단하게 알아보자. 트랜잭션의 성질 (ACID) 1. 원자성 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다. 2. 일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다. 무결성: 데이터의 정확성, 일관성, 유효성을 유지하는 것 무결성의 종류 개체 무결성: 기본키로 선택된 필드는 빈 값을 허용하지 않는다. 참조 무결성: ..
2022.08.30 -
디자인패턴 (2) - 프록시 패턴
보호되어 있는 글입니다.
2022.08.26 -
디자인 패턴 (1) - 전략 패턴
디자인 패턴이란? 애플리케이션을 설계하고 구현할 때 특정 맥락에서 자주 발생하는 문제들을 피하기 위해 사용되는 패턴이다. 서비스가 커질수록, 협업 인원이 늘어갈 수록 코드의 양은 많아지며 개발자 마다 코드의 스타일이 달라지기기 쉽다. 이러한 문제가 계속되면 될 수록 버그의 발생 빈도는 높아지고 성능 이슈가 생기게 된다. 디자인 패턴은 의사소통 수단의 일종이자 코드의 효율성을 높이는 수단이다. 디자인 패턴은 알고리즘이나 특정 기술이 아니다 설계방법이자 코딩 방법론일 뿐이기에 모든 상황에 있어 디자인 패턴을 적용하려 하지 말되 상황마다 적절한 패턴을 이용 하는게 프로그램을 안정적이게 설계 할 수 있다. @Slf4j public class ContextV1Test { @Test void templateMeth..
2022.08.22 -
우당탕탕 Nginx 적용기 ( 근데 이제 Actions를 곁들인.. )
현재 피플의 테스트 서버는 AWS Beanstalk에 배포하여 진행하고 있습니다. Beanstalk는 코드 ex) .jar 파일만 업로드하면 알아서 셋팅, 로드 밸런싱, Auto Scaling부터 애플리케이션 모니터링 까지 배포를 자동으로 처리하는 AWS의 서비스입니다. 사실상 많은 셋팅과 작업이 필요한 EC2의 업그레이드 버전이라고 할 수 있습니다. 뿐만 아니라 Beanstalk은 인스턴스에 대한 비용만 부과하기 때문에 추가적인 과금요소 또한 없습니다. CI/CD 자동 연결을 제외하면 Heroku와 매우 비슷합니다. 다만 Heroku는 트래픽 대비 금액이 비씨기 때문에 스타트업에서 가장 많이 사용되는 서비스로 뽑힌다고 합니다. 1. 스프링 설정 스프링 부트엔 Tomcat이 기본적으로 내장 되어 있고 T..
2022.08.18 -
Docker
Docker란? 도커란 컨테이너 가상화 기술을 사용하여 응용프로그램을 더 쉽게 배포, 실행 할 수 있도록 설계된 툴이며 컨테이너 기반의 기술 및 오픈소스라는 특징을 갖고있습니다. 서버에서의 컨테이너 기술은 자신이 필요한 프로그램 혹은 실행환경 등 여러 리소스들을 한곳에 모아놓고 관리 할 수 있습니다. ex) 카카오톡을 예로 들자면, 카카오 톡을 실행하기 위한 파일, 시스템 설정, 라이브러리 등의 종속성을 도커 컨테이너에 저장하고 실행 후 이를 카카오톡에서 필요로 한다면 컨테이너에서 가져가는 방식. 가상화 기술 하나의 하드웨어에 여러가지 OS 혹은 프로그램을 실행하여 보다 하드웨어의 자원을 효율적으로 사용 할 수 있는 기술 허나 가상화 기술은 각각 Guest OS를 갖고 있어야 하는 제약적인 부분 때문에 ..
2022.07.20