[Project] 멀티모듈로 분리하기
·
프로젝트
단기 집중개발로 개인 프로젝트를 마무리 후 미흡했던 부분을 보완하거나 개선하는 작업을 진행하고 있다. 테스트 코드 작성이나 프론트엔드 구현 등 작업들이 남아있지만, 가장 하고싶었던건 프로젝트를 레이어 별 멀티모듈로 분리하는 작업이었다. 최근 강의와 유튜브 영상에서 멀티 모듈로 나눈 코드로 시연하는걸 보고 나도 한 번 해보고 싶은게 컸다. 마침 프로젝트 개선 사항에도 부합했기 때문에 진행하기로 결정했고 분리했던 과정을 간략히 기록했다.1. 배경 및 동기현재 프로젝트는 단일 모듈로 구성해 기능과 역할별 패키지를 분리했다. 각 레이어간 역할 및 구조를 명확히 분리하기 위해 레이어 별 멀티 모듈 형태로 구조를 변경했다.// 기존 구조arcademarket(proejct root)├─ docs(문서 모음)├─ ...
[Project] 나혼자 해커톤 후기 - 2
·
프로젝트
지난번 진행했던 개인 프로젝트를 이어서 완성했다(지난 작업 후기). 이번에도 주말동안 약 12시간동안 작업하며 미흡했던 부분을 보완하고 새로운 기능을 개발했다.작업이번에는 타이머를 12시간으로 맞추고 1시간이 남을 때 까지 작업했다. 핵심 기능을 어느정도 완료하고나니 집중력이 떨어져서 후반에 남아있던 프론트엔드 작업은 완성하지 못하고 마무리했다. 작업을 하면서 노트에 완료한 시간을 기록하긴 했는데 정확하진 않다.통계총 작업시간 : 약 11시간커밋 수: 94(+57)Java 파일: 128개(+77)Vue 파일: 13개(+4)Typescript 파일: 47개(지난번 카운트를 잘못했는지 수가 줄었다.)지난번에 완료한 기능회원 : 회원 가입, 회원 기본정보 조회, 로그인 및 인증아이템 마스터 : 정보 등록 및 ..
[Project] 나혼자 해커톤 후기 - 1
·
프로젝트
개요연휴동안 충분히 쉬기도 했고, 그동안 진행하던 개인프로젝트가 지지부진한 것 같아 리프레시할 겸 새로운 단기 프로젝트가 하고 싶었다. 주말동안 시간을 정하고(10시간) 완성해보자는 생각으로 Arcade Market이란 프로젝트를 시작했다. 너무 참신한 아이디어를 내기는 어려울 것 같아 포인트로 아이템을 거래하는 플랫폼을 주제로 진행했다.토요일 오전부터 바로 개발에 들어갈 수 있게 PRD, 유저플로우 문서를 작성했다. AI의 도움을 받아가며 초안을 작성할 수 있었다. 개발할 때 필요할 것 같은 기능상세정의 문서는 대략 템플릿 정도만 만들어두고 개발하면서 바로 AI 생성이 가능하게끔 준비했다. 목요일 퇴근 후, 금요일 출근 전에 약 1~2시간 정도 소요된 것 같다.계획은 백엔드, 프론트엔드 모두 개발할 생..
spring batch
·
카테고리 없음
보호되어 있는 글입니다.
[Java] GC
·
Language/Java
보호되어 있는 글입니다.
[JPA] N+1 문제
·
Spring Framework/JPA
N+1 문제란 ORM 사용 시 발생하는 대표적인 성능 이슈부모 엔티티를 조회하는 1번의 쿼리 후, 각 부모마다 연관된 자식 엔티티를 조회하는 N번의 추가 쿼리가 실행되는 현상예시: 100개의 게시물과 댓글 있을 때게시글 전체 조회: 1번 + 각 게시글의 댓글 조회: 100번 ⇒ 총 101번의 쿼리가 실행모든 정보를 한 번의 쿼리로 가져오지 못하고 추가 쿼리로 인해 성능 이슈가 발생한다.문제 상황게시물(Post), 댓글(Comment) 엔티티가 있다.(이외의 테이블은 없다고 가정)게시물 목록 조회 시 각 게시물의 댓글 갯수를 함께 조회하고 싶다.@Entity@Table(name = "post")@NoArgsConstructor(access = AccessLevel.PROTECTED)@Getterpublic..
[Spring] tomcat 설정의 동작 원리(max-connections, accept-count, threads.max)
·
Spring Framework/Spring
Spring Boot로 웹 애플리케이션을 개발하면서 application.yml에 있는 Tomcat 설정들을 본적은 있지만 별 생각 없이 무심하게 지나쳤다. 하지만 이 설정들이 정확히 무엇을 의미하고, 어떤 역할을 하는지 궁금해 졌다.server: tomcat: max-connections: 8192 accept-count: 100 threads: max: 200본 포스팅에서는 Tomcat의 세 가지 핵심 설정인 accept-count, max-connections, threads.max가 클라이언트 요청을 처리하는 과정에서 각각 어떤 역할을 하는지 정리했다.설정들의 역할그 전에 알아야 할 것HTTP는 TCP를 기반으로 동작한다클라이언트와 서버간 연결을 위해 3-hand-sha..
[Spring] 트랜잭션과 동시성
·
Spring Framework/Spring
처음 Spring을 공부할 때 감명받은 기능 중 하나가 @Transcational이었다. 애너테이션만 붙여주면 일일히 커넥션을 열고 커서를 가져오고 작업하고 리소스를 닫는 등 번거로운 작업들이 알아서 적용되니 정말 편리했다. 그러다보니 트랜잭션이 필요한 곳에서는 관성적으로 @Transactional를 추가하고 모든 문제가 해결됐다고 생각했다. 하지만 서비스 환경에서 멀티 스레드 상황이라면 문제가 생길 수 있다.트랜잭션, 격리 수준, 락킹, 동시성 제어 등 여러 용어들은 많이 들어보고, 또 알고 있다고 생각했지만 각각의 개념이 서로 연결되지 않은 느낌이 들었다. 동시성 제어에 대해 다시 공부를 시작하면서 차근차근 정리해나가려고한다. 우선은 가장 기본적인 트랜잭션과 @Transactional에 대해 포스팅을..