본문 바로가기

Java Projects15

(25.04.07) 비관적 락(Pessimistic Lock) 동시성 제어 적용 (24.07.15)[14주차] 프로젝트 중 동시성 제어를 위한 Redisson 활용많은 요청이 한번에 들어올 경우 DB에 CRUD간 데이터의 일관성, 무결성, 정합성의 DB 데이터 특성을 보호하기 위해서 동시성을 제어할 필요가 있다. 쓰레드나 프로세스가 동시에 데이터에 접근하andrew75313.tistory.com예전에 진행했던 Side Project인 칸반보드 툴을 제작한 프로젝트에서,칸반보드의 컬럼당 카드(할일) 을 생성하는데 동시성 문제가 발생했다.여러 서버(여러 사용자) 가 같은 컬럼을 향해 카드 생성 요청을 할 경우, 카드 순서를 담당하는 필드 값이 1씩 늘어나지 않고 동일한 위치값으로 내지는 더 많은 위치값으로 뛰어넘고 저장되는 이슈였다. DB 단에서 저장이 될때 순차적으로 숫자를 부여할 수.. 2025. 4. 7.
(24.08.19) 최종 프로젝트 점검 및 정리 최종 프로젝트 점검 및 정리프로젝트 자동화 CI/CD를 포함 + Trouble Shooting을 포함한 주요 내용을 정리정리한 Project를 문서화, Presentation 문서로 가공 (본인 정리 및 제작)Presentation Slides 2024. 8. 19.
(24.08.05)[17주차] Nginx 404 Not Found 오류 고찰과 해결 정상적으로 Java SpringBoot 기반의 BE 프로젝트와 React를 활용한 FE 가 CI/CD를 통해서 컨테이너 형식으로 웹 서버 인스턴스에서 최신화되면서 배포 파이프 라인이 일단은 완료가 되었었다. publicclassdev.com 도메인을 구입하여, 영역을 지정해 해당 웹서버 인스턴스로 접근할 수 있도록 설정을 했다.     하지만, 브라우저에서 도메인으로 진입 후, 새로고침을 하거나, 특정 주소에 직접적으로 접속을 하는 경우(ex. 브라우저 주소창에 publicclassdev.com/board/2 처럼 Path를 전부 지정해서 한번에 요청) 에 위와같은 nginx단에서 404 Not Found 에러가 발생했다. 이에 대해 고찰해보고 해결까지를 정리하면서 주의할 점을 다시 한번 상기 하도록 한.. 2024. 8. 5.
(24.08.01) CD 파이프 라인 재구성 계획, GitHub Actions를 통한 컨테이너 빌드 자동화 구현 CD 파이프 라인 재구성Nginx를 두고 React와 SpringBoot 컨테이너간 포트를 맞췄음에도, React요청시 net::ERR_CONNECTION_REFUSED 문제가 발생,따로 nginx.conf 설정을 포함해서 Dockerfile을 통해 이미지를 제작GitHub Actions를 통한 컨테이너 빌드 자동화GitHub Actions YAML을 통해서 자동화Dockerhub 이미지 PushS3를 사용할 수 있지만, Scale-out 서버인 상황에서 Dockerhub를 사용해서 아이디 비밀번호만 있어도 쉽게 이미지를 다운받을 수 있도록 할 수 있기 때문에  Dockerhub를 사용하는 것으로 결정인스턴스에서 이미지 PullContainer 빌드를 진행이때 Actions의 환경변수를 통해 직접  SS.. 2024. 8. 2.
(24.07.26) CI/CD 파이프 라인 구상 및 테스트 코드 점검 테스트 코드를 작성했기 때문에 팀원들이 BE 기능 구성과 더불어서 CI/CD 파이프 라인을 간략하게 구상MySQL, Redis 분리해서 각각 Docker 컨테이너당 하나의 EC2 인스턴스를 사용하는 것으로 구상S3는 파일을 저장해야하기 때문에 해당 부분을 따로 분리React단으로 FE를 구성할 것을 결정Route53 을 통해서 Domain 을 구성하기로 사전 협의CI/CDJenkins와 Kubernetes 사용을 협의했지만, 오히려 연관관계가 복잡한 구성이기 때문에 과하게 확장해서 오케스트레이션 할 필요없이 GitHub Actions를 통해서 직접 DevOps  파이프 라인을 구상할 수 있도록 설정 2024. 7. 26.
(24.07.26) 코드 리뷰 기능(게시글, 댓글, 좋아요) 테스트 코드 작성 통합 테스트 코드 작성Controller 테스트 코드@WebMvcTest 테스트 코드 진행 MockSpringSecurityFilter 사용public class MockSpringSecurityFilter implements Filter { @Override public void init(FilterConfig filterConfig) {} @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { SecurityContextHolder.getContext() .setAuthentication((Authen.. 2024. 7. 26.
(24.07.24) 코드 리뷰 게시글 조회 & 카테고리 검색 기능 구현 코드 리뷰 CodeReview 조회 & 카테고리 검색 기능 - JPQL 활용 기능팀원들의 QueryDSL 사용에 있어서 불편함이 있다는 의견이 많아 JPQL과 JpaRepository 상속받아서 쿼리 메서드를 사용하는 방향으로 결정본인은 SQLD 공부를 했었기 때문에 조회 관련하여 SQL다루는 것이 어렵지 않아 크게 문제가 되지 않으나, QueryDSL을 사용하기 위해서는 JPAQueryFactory 의 Bean등록을 위한 Configuration 클래스와, QueryDSL을 사용할 수 있는 인터페이스와 해당 구현을 해야하는 Repository  클래스를 더 추가해야하므로 볼륨이 굉장히 커진다고 판단코드 리뷰 CodeReviews 전체 게시글 조회 기능 // 게시글 전체 조회 public CodeRevi.. 2024. 7. 24.