[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에 대해 포스팅을..
[Project] 4dollar - 헥사고날 아키텍처에서 패키지 구조 전환
·
프로젝트
개요사이드 프로젝트를 시작하면서 새로운 아키텍처를 사용하고 싶었다. 지금까지는 레이어드 아키텍처를 쓰거나, 진행중인 프로젝트의 기존 규칙을 따르기만해서 패키지 구조에 대해 깊이 고민한 경험이 없었다. 새로 시작하는 프로젝트인만큼 멋진 구조를 만들고 싶어서 유튜브나 책에서 많이 접해봤던 헥사고날 아키텍처를 도입했다. 직접 사용해보는건 처음이라 공부하면서 진행하느라 조금 엉성한 느낌은 있었지만 나름 적절히 적용할 수 있었다. 하지만 개발을 진행하면서 몇몇 불편한 부분이 생겨서 새로운 구조로 전환했다. 더 개선할 여지는 있지만 아직까지는 문제 없다고 생각한다. 기존 패키지 구조에서 어떤 문제점을 경험했는지, 새로운 패키지구조에 대한 고민과 어떤 부분을 변경했는지 포스팅을 남긴다.기술 스택: Java, Spri..