본문 바로가기

Develop Study157

(24.08.09)[17주차] WebSocket과 실시간 메시지 구조 프로젝트를 진행하면서 사용자의 화면단과 서버의 데이터 요청응답이 필요한 기능을 사용이 필요했다.특히, 사용자가 포함된 그룹에서 그룹내 실시간 채팅 기능 구현이 필요해지면서 WebSocket을 사용해서 구현을 했다. 관련해서 코드 구현방향은 해당 담당자의 개발로 진행이 되었지만, 관련해서 내가 부족할 수 있는 이론과 작동 방식에 대해서 한번더 짚고 넘어가기 위해 정리WebSocket웹을 통한 클라이언트(브라우저) - 서버 간 실시간으로 양방향 통신을 가능하게 하는 기술즉, Stateless HTTP 통신과 달리 Stateful 프로토콜클라이언트HTTP가 Request-Response 의 단방향 통신 방식임에 반해 WebSocket을 통해 한번의 연결로 클라이언트-서버 간 지속적인 양방향 통신이 가능따라서,.. 2024. 8. 9.
(24.08.07)[17주차] Spring Batch와 스케쥴링 - 활용 및 정리 (24.08.06)[17주차] Spring Batch와 스케쥴링 이전의 글에서 Spring Batch의 정의와 구성 요소 및 기능, 그리고 Quartz를 사용해서 어떻게 작동시킬 수 있을 지에 대한 내용을 정리를 했다. 하지만, 최신버전의 Spring Boot 에 따라 기존의 Spring Batch에서 많이 사용하는 Factory들이 Deprecated  됨에 따라서 패턴이 달라졌기 때문에, 최신버전의 Spring Batch 5 기준으로 코드를 직접 작성하고, 이를 분석하면서 활용에 대비하도록 한다. Spring Batch 기본 활용환경 설정Gradle Dependency 추가implementation 'org.springframework.boot:spring-boot-starter-batch'(Appl.. 2024. 8. 7.
(24.08.06)[17주차] Spring Batch와 스케쥴링 프로젝트에서 특정 시간마다 코드 챌린지의 순위의 갱신, 그리고 Top 검색어의 30분마다의 갱신의 주기적인 작업이 필요했다. 이로써 본인의 로직은 아니지만, 담당 팀원의 구현으로 Spring Batch 의 스케쥴 기능을 사용함으로 일련의 기능들이 구현을 완성했고, 대용량 데이터 처리에 관련해서 SpringBatch를 사용 하면서 참고할 시간이 없었기에 관련되어 학습하고 정리를 하려고 한다.Spring Batch대량의 데이터를 처리하기 위한 FrameworkSpring Framework 기반의 서브 프로젝트로깅, 트랜잭션 관리, 리소스 관리 기반으로 대규모 데이터를 일괄적으로 반복 처리, 데이터 변환 및 집계, 배치 작업, 주기적인 처리를 안정적으로 자동화 작업 시행복잡한 대용량 및 고성능 일괄 작업을 효.. 2024. 8. 6.
(24.08.02)[16주차] CD Pipeline 중 GitHubs자동화 배포에 대한 정리 CD Pipeline 중 GitHubs자동화 배포에 대한 정리마지막 프로젝트의 웹 서비스 제품을 만드는 것을 목표로 해서 중간 MVP 제작을 위해서 배포용 파이프 라인을 구상하고 튜터님들의 조언을 받아서 완성 후 구축을 했다.위츼 파이프 라인 중에서 CD 부분 즉, GitHub Repository로 Java 기반의 Spring Boot BE 프로젝트에대해서 코드를 Push 시켰을 때, 배포를 할 수 있는 AWS EC2 인스턴스에 도커 컨테이너에 자동으로 실행해서 인스턴스 내에 띄우도록 했다.물론 FE React 개발도 동시에 똑같이 진행을 하며, 이는 GitHub Actions 를 통한 Workflows 를 통해 진행했다.이론상은 단순하지만, GitHub Actions YAML에 작업이 기재 하는 방법 .. 2024. 8. 2.
(24.07.24)[15주차] Spring Data JPA Tuple 객체의 사용 JPQL을 통한 JPA를 쿼리 언어를 사용하면서 여러 테이블을 조인을 하다가 보면은 다양한 컬럼들의 값들을 골라서 사용을 하고 싶을 때가 있다. 즉 게시글 테이블에는 작성자 User의 ID만이 저장되어있지만, User 테이블과 JOIN을 해서 User 테이블에서 사용자ID가 아닌 이름이나 기타 정보를 가지고 있는  컬럼들을 골라서 가지고 올 수 있어 프로젝트에 있어서 조회 부분에 능동적으로 사용하기 위해서 Tuple 객체의 사용을 정리  Tuple 객체JPQL은 SQL 처럼 Table 이 아닌 Entity(객체) 기준으로 작성하는 쿼리문으로 @Query Annotation을 사용해서 해당 쿼리를 컴파일시 체크를 할 수 있도록 할 수 있음따라서, 이러한 JPQL은 실제 SQL처럼 JOIN 문을 통해서 여러.. 2024. 7. 24.
(24.07.23)[15주차] MinIO 활용 정리 - 코드 분석 S3대신 개발/테스트 환경으로 MinIO를 사용하기로 결정하여 학습하고 검색한 대로 패턴을 보면서비지니스 로직을 Service 단에 구성을 했다.하지만, JSON에서 한 필드의 값으로 받아온 String 타입의 텍스트를 txt 파일로 바꾼뒤에, MinIO 서버의 버킷에 저장하고 다운로드 하는 코드의 구조를 한번 더 점검하면서, 추후 필요할 경우에 능동적으로 사용할 수 있도록 분석한 부분을 정리사전 세팅code 는 RequestDTO의 코드 리뷰의 코드 부분을 Spring 으로 String 타입으로 가져온 텍스트codReviewId는 code 부분을 제이한 코드 리뷰의 제목, 내용을 담은 객체로 이미 DB에 save에 되에서 PK인 해당 객체의 IDminioClient 는 이미 주입받은 형태업로드Strin.. 2024. 7. 23.
(24.07.22)[15주차] MinIO 활용 정리 프로젝트 구성에 있어서 데이터를 저장하고, 조회, 그리고 수정도 할 수 있게끔 기능을 추가를 했다.DI 배포 파이프라인에 따라서 AWS S3를 사용해야하지만,개발 단계에서 테스트용으로 직접적으로 사용하는데에는 비용적으로 부담이 크고, 빠르게 변경을 할 수 없다는 단점이 있다.이 때, 오픈 소스 객체 스토리지 서버인 MinIO를 활용하여 개발을 진행하려고 한다. 이를 위해 아래에는 MinIO를 활용하기 위해 정리하고 학습한 내용이다.MinIO오픈 소스 객체 스토리지 서버를 제공해주는 소프트 웨어오픈 소스 이므로 커뮤니티를 통한 정보와 문서가 제공되고 있음쉬운 튜토리얼이 가능 : WebUI 제공Amazon S3 API와 호환이 가능실제 S3에 배포 전 기능을 그대로 활용해서 개발, 테스트를 실제 환경과 똑같.. 2024. 7. 22.