TIL

    [TIL - 20230531] webflux 채널 생성/조회

    💻구현 사용자가 스트리밍 중인 채널에 들어가면 해당 채널에 들어온 사람들끼리만 채팅이 가능해야 한다. 그러기 위해서는 우선 채널이 필요했다. 오늘도 정아님과 코딩 시작! 회원가입 시에 모든 사용자는 자신만의 채널을 갖게 된다. MemberService @Transactional public Mono signup(SignupRequestDto signupRequestDto) { return memberRepository .existsByUserId(signupRequestDto.getUserId()) .flatMap(exists -> { if (exists) return Mono.error(new IllegalArgumentException("중복된 아이디입니다.")); else { return membe..

    [TIL - 20230530] Webflux + RSocket 채팅

    💻구현 WebSocket으로 채팅방을 만들어 1:1대화는 만들어보았는데... 그건 Spring Web MVC의 이야기다. 우리는 WebFlux 프레임워크를 사용하기 때문에 RSocket으로 채팅을 구현했다. 비동기적으로 코드 짜는 것도 힘든데 여기에 채팅까지...? 관련 내용을 찾아보니 생각보다 RSocket이 WebSocket 보다 작성한 코드 양이 적었다. RSocket은 STOMP 프로토콜을 지원하지 않는다고 해서 걱정했는데, 전체 채팅은 금방 구현할 수 있었다. 내용은 여기서 확인! https://yeon-dev.tistory.com/207 [Spring] Webflux + RSocket, React 사용한 전체 채팅 구현 Webflux에서 RSocket을 사용하여 전체 채팅을 구현해보자. bui..

    [TIL - 20230526] Github Actions Jacoco&Codecov

    💻문제점 jacoco로 테스트 커버리지 파일을 생성하고, PR을 보낼 때 커버리지가 Comment로 생성되기를 원했다. 하지만 Comment는 영 나올 생각을 안하고,,, CI도 계속 실패했다. 📃시도 name: Code Coverage sample on: push: branches: - 'develop' - 'main' pull_request: branches: - 'develop' - 'main' jobs: code-coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: Grant exec..

    [TIL - 20230525] Prometheus, Grafana 적용, 오류 해결

    💻문제점1 프로젝트에 prometheus와 grafana 툴을 적용하여 모니터링 하려고 했다. 프로젝트 최상위 프로젝트 하위에 prometheus.yml을 생성하여 터미널에서 다음 명령어를 수행했다. docker run \ -d \ -p 9090:9090 \ -v ./prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus 다음과 같은 오류가 발생했다. failed to register layer: Error processing tar file(exit status 127): docker-untar: symbol lookup error: docker-untar: undefine d symbol: , version GLIBC_2.2.5 docker-..

    [TIL - 20230524] WebFlux 예제 구현

    💻문제점 우리가 실시간 스트리밍 레퍼런스가 WebFlux로 작성된 코드기도 하고, 대규모 트래픽이 예상되는 프로젝트일 뿐더러 Spring MVC로 구현하면 많아질 수 있는 쓰레드를 줄이기 위해 WebFlux를 사용하는 방향으로 진행되고 있다. 그동안 배운게 Spring Web MVC라 새로운 프레임워크를 적용한다는 점이 위험 부담도 있고, 새롭게 공부해야 한다는 점에서 어려운 부분도 있다. 우선 간단한 CRUD부터 공부를 해야겠다 싶어서 유튜브 예제를 보고 간단한 예제를 구성해보고, 기능을 새롭게 추가해보기도 했다. 📃시도 간단하게 상품을 등록하고, 상품 담기/삭제, 카트에서 상품 하나 빼기/상품 전체 삭제 기능을 구현해보았다. https://yeon-dev.tistory.com/197 [Spring] ..

    [TIL - 20230522] EC2 도커 이미지 한 번에 배포.. OBS 연결 실패

    💻문제점 EC2에 접속하여 docker hub에 올린 이미지를 모두 pull 받아왔다. 이미지를 하나씩 실행하면 실패하거나 db 관련 이미지를 올리면 중지해야 다른 이미지를 올릴 수 있어서 한 번에 이미지를 올릴 수 있는 방법을 생각했다. sudo docker run -t -i -p 8083:8083 sojk401/live-repo:auth 📃시도 docker-compose 디렉토리를 생성하고 이동한다. mkdir ./docker-compose cd ./docker-compose docker-compose.yaml 파일을 생성했다. touch docker-compose.yaml 편집 모드로 들어가자. nano docker-compose.yaml 해당 파일 안에 다음 내용을 적어주었다. version: "..

    [TIL - 20230522] 로컬에서 OBS 실시간 스트리밍

    💻문제점 레퍼런스 깃허브를 clone 해서 받아와 다음 명령어로 실행했다. docker compose up -d 그런데 계속 transcodingservice 패키지의 Dockerfile의 다음 줄에서 더 진행되지 않았다. 어떨 때는 이 줄에서 에러가 뜨는가 하면, RUN apt-get -y update && apt-get -y upgrade && apt-get install -y --no-install-recommends ffmpeg 어떨 때는 이 줄에서 에러가 뜨기도 했다. RUN ./mvnw dependency:resolve 팀원 모두 같은 깃허브 레포지토리를 가져와 실행했는데, 하나 둘 씩 성공하더니 나만 안되는 것이다...! 📃시도 1. 권한이 없나? 싶어서 앞에 권한 부여해주는 명령어를 추가해..