본문 바로가기

분류 전체보기41

소나큐브 설치하기 이 글에서는 현재 최신버전인 9.0버전이 아니라, LTS버전인 8.9버전을 사용했다! 소나큐브는 프로그래밍 언어에서 버그, 코드 악취, 보안 취약점을 발견할 목적으로 정적 코드 분석으로 자동 리뷰를 수행하기 위한 지속적인 코드 품질 검사용 오픈 소스 플랫폼이다. 중복 코드, 코딩 표준, 유닛 테스트, 코드 커버리지, 코드 복잡도, 주석, 버그 및 보안 취약점의 보고서를 제공한다. Summary 백엔드 정적 분석 리포트를 공유한다. CloudWatch logs 대시보드를 구성한다. 정적 분석 리포트를 공유한다는 요구사항이 등장했다. '정적 분석 리포트가 뭘까...' 궁금해하고 있을 때 나봄이 질문을 던져줬고, 구구께서 "소나큐브를 적용해보면 된다." 라는 답변을 주셨다. 그리하여 소나큐브 트러블 슈팅 대단.. 2021. 8. 23.
npm에 babble만의 라이브러리 올리기 Babble 페이지는 초기 유저들의 접근성을 높이기 위해 로그인 없이도 Babble의 모든 기능을 사용할 수 있게 만들어 놓았다. 하지만 Babble의 메인 기능인 채팅을 서비스하려면, 이 유저가 어떤 유저인지 식별할 수 있는 최소한의 장치를 만들어놓아야 했다. 적어도 지금 내가 대화하는 상대방이 '익명의 유저 1'인지, '익명의 유저2'인지 나는 다른 사람들에게 어떤 유저로 보여지는지 알아야 대화를 이어나갈 수 있으니까 말이다. 먼저 우리가 생각해 낸 아이디어는 아래와 같다. 1. 사용자가 채팅 방에 들어가기 전에 직접 닉네임을 설정하고 들어가기 (닉네임 설정을 하지 않으면 채팅방 입장이 불가) 2. 익명#{랜덤한 8자리 숫자} 3. 직접 랜덤 한글 닉네임 생성기 만들기 ... 만약 이렇게 생성한 닉네.. 2021. 8. 21.
도커, 스프링부트 타임 존 설정 도커 컨테이너 타임 존 설정 도커 컨테이너 위에서 동작하면서 별도의 타임 존 설정이 없는 프로그램들의 경우 docker-compose.yml 파일의 타임 존 설정에 따라 시간이 설정된다. # cat docker-compose.yml # 버전 정의 (yml 버전) version: '3.7' # service 정의 # docker-compose로 생성 할 container의 옵션을 정의 services: # 생성 할 container 변수 지정 nignx: # container 이름 지정 container_name: test-nginx # container 생성시 사용 할 이미지 이름 지정 및 등록([이미지 이름]:[버전]) image: reverse-proxy:0.0.4 ...(생략) environment.. 2021. 8. 21.
도커 컨테이너 IP 주소 트러블 슈팅 첫 번째 이슈 - Summary babble 프로젝트를 진행하면서, 상용 서버에서 릴리즈 테스트를 진행하지 말고 별도의 테스팅 서버를 만들어서 릴리즈 테스트를 진행하고자 했다. 상용 서버와 온전히 같은 환경을 갖추기 위해 EC2 인스턴스를 추가로 3~4개 개설하면서 테스팅 서버를 개설할까 고민해봤지만, 도커를 사용해서 각 계층을 독립시키면 EC2 인스턴스 1개만으로도 충분히 테스트가 가능할 것 같았다. (추후 인스턴스를 제거하기도 편하고) 결국 위 그림과 같은 형태로 도커 위에 3개의 컨테이너를 올렸다. web-server는 nginx로 구성하여 외부(public IP)로 부터 전달되는 요청을 바로 옆 WAS 컨테이너로 전달한다. 요청을 전달 받은 WAS는 로직을 수행하고, 영속성이 부여된 데이터가 필요.. 2021. 8. 21.
WebSocket 채팅 클라이언트 구현기 💬 채팅 구현 내용 ■ 일단 stomp의 기본 메소드 몇 가지만 알아보도록 하자. 참고로 stomp.js의 최신 버전은 version 5인데, 이번에 우리 팀이 사용한 버전은 version 4. - client or over: 해당하는 URL에 존재하는 STOMP 서버에 연결된 WebSocket 클라이언트를 생성한다. SockJS같은 별도의 솔루션을 이용하고자 하면 over 메소드를, 그렇지 않다면 client 메소드를 사용해주면 되는 듯. - connect: STOMP 브로커와의 연결을 열어줄 때 사용하는 메소드이다. 웹소켓이 연결되었을 때 처리해주고자 하는 동작들을 콜백 함수로 넣어줄 수 있다. - subscribe: 특정 STOMP 브로커의 location을 구독한다. 구독한 location에서 메.. 2021. 8. 20.
Invalidations를 이용한 CloudFront 캐싱 컨트롤 summary 3차 데모데이에 맞춰 프론트엔드 쪽에 새로운 요구사항이 등장했다. • AWS로 이전 • 시맨틱 버저닝 추가 • 사용자가 배포된 기준으로 항상 최신 버전을 봐야됨 나는 사용자가 배포된 기준으로 항상 최신 버전을 봐야됨 요구사항을 CloudFront 가 갖고 있는 캐싱 정책을 변경해서, 항시 원본 저장소(S3 버킷)를 참조하라는 것으로 해석했다. 때문에 CloudFront - Edit behavior - Cache key and origin requests - Cache policy 설정에서 기본 설정인 CachingOptimized를 CachingDisabled로 바꿔 CloudFront가 캐싱을 진행하지 않도록 하고자 했다. 그런데 루트가 CloudFront - Invalidations 설.. 2021. 8. 20.
CloudFront 도메인 이름 변경하기 summary DNS를 활용하는데 2가지 방법이 있다. Route 53로 DNS를 발급 받아 사용한다. (TLS 인증서 등록 과정이 생략된다.) 외부 DNS를 발급 받은 다음, SSL(TLS) 인증서를 ACM(Amazon Certificate Manager)를 통해 등록해서 사용한다. 1번 방법은 사실 AWS의 울타리 안에서 모든게 이루어지는 방법이므로 크게 신경쓸 것이 없다. 2번 방법은 DNS 사에 따라서 조금씩 방법이 달라진다. 나는 내도메인.한국과 namecheap DNS를 기준으로 작성할 것이다. 선행 작업 - S3 CloudFront와 연결되어 있는 S3 버켓 쪽에 정적 웹 사이트 호스팅을 진행 할 것임을 설정해주어야 한다. 정적 웹 사이트 호스팅 활성화 후, 인덱스 문서도 지정해준다. 지정하.. 2021. 8. 20.
채팅을 위한 프론트의 WebSocket 사전 공부 HTTP(HyperText Transfer Protocol) - HTTP는 단방향 통신 - 서버 프로세스는 클라이언트보다 먼저 실행되어 대기하고, 클라이언트의 요청에 항상 응답할 준비를 하고 있다. - 클라이언트의 요청이 선행되어야만 서버의 응답이 뒤따라올 수 있는 방식 📌 HTTP로 채팅을 구현하려면? 구름EDU - 모두를 위한 맞춤형 IT교육 구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/ edu.goorm.io 1. Polling 방식 - 클라이언트가 서버에 일정한 주기로 요청을 보내고 응답을 받는 방식 - 가장 기본적인 기법. 클라이언트와 서버 모두.. 2021. 8. 19.
Spring WebSocket 구현 - 1 Spring WebSocket qucik Start-1 스프링을 이용해 웹소켓 서버를 구현해봅니다. Goal 웹소켓에 대한 개념 설명보다는 구현 자체에 집중해봅니다. 공식문서 가이드를 매우 참고하여, 한개의 방에서 입장, 퇴장 메시지를 전송하는 app을 구현해봅니다. 환경 IntelliJ 2021.2 java 8 gradle 7.1.1 초기설정 https://start.spring.io/ 에 들어갑니다. 위와 같이 선택한뒤 내려받습니다. 의존성 추가 implementation 'org.webjars:webjars-locator-core' implementation 'org.webjars:sockjs-client:1.0.2' implementation 'org.webja.. 2021. 8. 19.