TIL

    [TIL - 20230623] rsocket 채팅창에 후원 내역 띄우기

    💻문제점 후원을 하면 "{nickname}님이 {points}포인트 후원!" 그리고 후원 메시지를 띄우려고 했다. 어떻게 알림을 띄울까 하다가 어차피 이미 RSocket을 사용하고 있으니, 아프리카TV처럼 채팅창에 후원 내역을 띄우면 될 것 같았다. ChatController @MessageMapping("donation") Mono donation(DonationDto donationDto){ return chatService.donation(donationDto); } ChatService public Mono donation(DonationDto donationDto) { this.sendDonation(donationDto); return Mono.just(donationDto); } public..

    [TIL - 20230622] K6 성능 테스트 시나리오 작성

    💻문제점 흠 여러 명이 후원하는 것에 대해 K6로 성능 테스트를 하려고 했는데 401 오류가 떴다. token이 필요한 API라 access_token을 요청 헤더에 넣어주긴 해야하는데... k6 테스트할 때에는 어떻게 하지? 우선 k6의 라이프 사이클에 대해 알아보면, 크게 4가지 라이프 사이클이 있다. 각 단계에 대한 설명은 여기를 참고 // 1. init code export function setup() { // 2. setup code } export default function (data) { // 3. VU code } export function teardown(data) { // 4. teardown code } 토큰은 3단계 시나리오를 실행하기 전에 2단계에서 설정을 해주어야 할 것 ..

    [TIL - 20230621] Webflux R2DBC 후원 동시성 문제 해결

    💻문제점1다음과 같이 points 테이블이 있다.포인트 사용을 테스트해보면 test1의 포인트는 100점 줄어들고, 스트리머인 test3의 포인트는 100점 증가한다. @Test @DisplayName("포인트 사용 테스트") public void testUsePoint() { PointUseDto pointUseDto = new PointUseDto("test3", 100, "message"); StepVerifier.create( pointService.usePoint(createMember("test1"), pointUseDto) ).assertNext(responseEntity -> { Asser..

    [TIL - 20230620] Webflux CORS

    💻문제점1 클라이언트에서 다음과 같이 결제가 성공하면 POST 요청을 보내도록 했다. if (rsp.paid_amount === data.response.amount) { alert('결제가 완료되었습니다.'); const requestBody = { points: parseInt(churOption.substring(0, churOption.length - 2)), }; try { console.log("충천 포인트: ", churOption.substring(0, churOption.length - 2)); const { data } = await axios.post('http://localhost:8080/points', requestBody, { headers }); } catch(error) {..

    [TIL - 20230616]

    💻문제점 로컬에서 했을 때는 RSocket으로 같은 채팅방 내에서 대화가 잘 된다. 이제 host를 ec2 IPv4 주소로 바꾸고 채팅하면 오류가 난다. 📃시도 보안그룹 설정에서 6565가 추가가 안 되어있어서 사용자 정의 TCP로 6565 포트를 허용해주었다. 🔍해결 docker-compose.yml에서 content-server 를 생성할 때 8080포트는 설정해주었는데, 6565 포트를 설정해주지 않았다, 잊어버림....! content-server: build: context: ./ContentService dockerfile: Dockerfile ports: - "8080:8080" - "6565:6565" links: - redis depends_on: - redis networks: - co..

    [TIL - 20230615] EC2 + Docker Compose 통한 배포

    💻현재 상황 + 문제점1 https://docs.docker.com/engine/install/debian/ 도커 엔진 설치 EC2 Docker Compose 설치 // 최신 docker compose 받아오기 sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose // 권한 부여 sudo chmod +x /usr/local/bin/docker-compose // 확인 docker-compose -v 자바 설치 sudo apt-get update && sudo apt-get upgrade sudo apt-..

    [TIL - 20230614] docker compose

    💻문제점 멀티 모듈을 어떻게 배포할 수 있을까... 하다가 우선 도커를 통해 이미지를 생성하기로 했다. ContentService, StreamingService, TranscodingService 각각에 Dockerfile을 생성했다. ContentService FROM eclipse-temurin:17-jdk-jammy ARG JAR_FILE_PATH=./build/libs/*.jar COPY $JAR_FILE_PATH app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"] StreamingService FROM eclipse-temurin:17-jdk-jammy ARG JAR_FILE_PATH=build/libs/*.jar COPY $JAR_FILE..