본문 바로가기

전체 글112

[FitTrip] DELETE IN을 사용한 배치 처리로 얻을 수 있는 성능 향상 DELETE시 IN 사용트러블 슈팅에서 DELETE IN 사용에 관한 내용을 다뤘다.하지만, 해당 작업이 실제로 의미가 있는지가 중요하다. 따라서, 직접 서비스 구동시 DB에 데이터를 추가하여 성능이 얼마나 향상되었는지 확인하기 위한 작업을 진행했다. 작업 대상으로 삼은 API는 채널 삭제 API이다.포럼 채널에 속해있는 포럼 100개각 포럼과 연관되어 있는 파일 100개포럼 100개, 파일 10000개로 구성  서비스 구동시 DB Init 코드@Slf4j@Component@RequiredArgsConstructorpublic class BatchTest { private final UserRepository userRepository; private final ServerRepository .. 2024. 7. 2.
[Jenkins] Jenkins 소개 Jenkins   Jenkins는 먼저 지속적인 통합, 지속적인 배포라는 의미를 갖고 있는 CI/CD 작업에 있어, 시스템의 자동화 파이프라인 또는 워크플로우를 설계하는 데 사용되는 도구이다.  지속적인 통합과 배포Continuous Intergration Server Continuous Development, Build, Test, Deploy다양한 Plugins 연동Build Plugins: Maven, Ant, Gradle ....VCS Plugins: Git, SVN ....Language Plugins: Java, Python, Node.js .... 2005년부터 Jenkins 사용이 시작되었으며,젠킨스 자체는 오픈소스이기에 수많은 래퍼런스와 플러그인을 갖고있다.  Jenkins의 구동 순서B.. 2024. 7. 1.
[커뮤니티 서비스] 커뮤니티 서비스 기능정리 구현한 커뮤니티 서비스의 기능 커뮤니티 서비스서버서버서버 CREATE서버 프로필, 서버 이름, 서버 설명서버 READ서버 조회시 보낼 데이터서버에 속해 있는 유저/채널/카테고리 정보서버 조회 시점 유저의 채널 위치 정보유저상태(온/오프라인) → 상태관리 서비스에 요청처음 제공된 채널의 채팅 데이터 → 채팅 서비스에 요청서버 UPDATE서버 프로필, 오픈 서버, 서버 이름, 서버 설명 변경서버 DELETE프로필 삭제, 서버 삭제, 서버에 속한 유저 삭제서버 기능서버에 속한 유저/채널/카테고리 관리서버 초대서버마다 고유의 랜덤 초대코드(1일 유지)공개서버 초대코드 필요X, 비공개서버 초대코드 필요O유저마다의 서버 목록 제공서버마다의 유저 닉네임 조정채널채널 CREATE포럼 채널음성 채널채팅 채널채널 READ.. 2024. 6. 29.
[Jenkins] 젠킨스 스터디 시작 최근 프로젝트를 진행하며 지원금을 받은게 있어 인프런 강의를 구입하게 되었다. 그래서 구입하게 된 것이 젠킨스와 관련된 이도원 강사님의 강의이다. Jenkins를 이용한 CI/CD Pipeline 구축 최종적으로, 만들게될 CI/CD WorkFlow는 다음과 같을 것이다.  중간에 있는 ANSIBLE, Terraform은 나에게 생소했는데 IaC라는 것이라고 한다. 기존에 인프라를 수동으로 일일이 구성하였던 것을 ANSIBLE, Terraform 같은 IaC로 빠르게 구성할 수 있다고 한다. 즉, 코드를 통해 인프라를 관리하고 프로비저닝 할 수 있게 도와준다고 한다. 관련해서는 다음에 한번에 다루는게 좋을 것 같다. 2024. 6. 28.
[트러블슈팅] 각 서비스의 로그 확인을 위한 로깅 시스템 구축 📄 Describe 상황프론트와 백엔드 연동간 다양한 오류가 발생하였습니다.발생한 오류가 프론트단의 문제인지 백엔드단의 문제를 확인하는 것은 서로의 로그를 비교해보아야 확실히 알 수 있었습니다. 하지만 당시 서버에 접근하여 컨테이너 로그를 확인하는 것이 가능한 사람은 배포를 맡은 저만 가능했기에제가 컴퓨터 앞에 있지 않는 상황에서는 프론트분들이 로그 확인이 불가능했습니다. 따라서, 실시간으로 백엔드 서비스의 로그를 확인할 수 있는 방법이 필요했습니다. 작업 내용위 문제의 해결방안으로 로그 실시간 모니터링을 위한 로깅 시스템을 구축하기로 하였고해당 시스템 구축을 위해 Grafana, Loki, Promtail를 사용하였습니다. Grafana는 수집한 metrics 시각화하기 위한 도구로 로그도 시각화 할.. 2024. 6. 26.
정보처리기사 합격 (2024.06.18) 정보처리기사에 합격하였다! 총점 90점으로 합격하였는데 친구들중에서는,하루 공부하고 65점으로 합격한 친구도 있었다. 중간중간 짬내서 공부했고 합격을 해내니 기분이 좋았다. 본인은 수제비 필기/실기 책을 사서 공부했다.  시험장에 갔을 때 정보처리기사를 응시하는 사람이 굉장히 많았는데합격률이 얼마나 될지 궁금하다. 2024. 6. 25.
[트러블슈팅] 오픈바이두 클라이언트 연결 오류 해결 과정 🐞 버그 설명 상황OPENVIDU가 로컬에서는 되지만 다른 클라이언트에서는 되지 않는 오류가 발생했다. 자신의 캠은 연결이 되지만, 정작 다른 클라이언트와는 통신이 되지 않는 문제였다. 버그 해결 팀원분이 관련하여 찾아보였고 결국 도커 이미지가 잘못되었다는 것을 확인하였다.우리가 사용한 OPENVIDU 도커 이미지는 openvidu/openvidu-dev:2.29.0였다. 하지만, 해당 이미지는 적혀있는데로 dev를 위한 버전이였어서 실제 배포시에는 동작이 되지 않았다.그래서, 실제 배포시 OPENVIDU를 사용하기 위한 방법을 찾아보았고, 직접 설치를 진행해야 된다는 사실을 깨닫게 되었다. OPENVIDU를 설치하는 방법은 다음 명령어를 사용하면 되었다.curl | bash  참고한 블로그https.. 2024. 6. 25.
[트러블슈팅] SSE 적용시 게이트웨이와 유저 서비스 연동간 발생 오류 해결 🐞 버그 설명 상황 알림 서버에서 SSE를 사용함에 따라 NGINX에 다음과 같은 설정을 추가로 작업했습니다.  추가된 NGINX 설정 location /api/notice { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' $allowed_origin always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE'; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization'; .. 2024. 6. 25.