프로젝트
-
[CI/CD] Jenkins란?프로젝트/아카이뷰 2024. 1. 27. 11:46
Jenkins 왜 궁금했을까 ❓SSAFY 2학기 공통 프로젝트를 진행하면서 완성한 기능들을 매번 수동 빌드하여 배포하는 과정이 너무 번거롭게 느껴졌다. EC2 서버에서 소스 코드를 pull 받고 build하고 배포하고 이러한 일련의 과정이 시간적인 측면에서 너무 아깝다고 생각되었고 업무 생산성을 향상시키기 위해 CI/CD가 필수적이라고 생각했다. CI/CD의 많은 도구 중에 왜 Jenkins를 선택했을까 ❓아래 3가지 키워드를 바탕으로 Jenkins를 선택하게 되었다.취업, 확장성, 무료1. 대부분의 채용 공고를 살펴보면 Jenkins 사용 경험을 요구하고 있다는 것을 확인했다. 추후, 기업에 들어가서 구성되어 있는 시스템을 파악하거나 기업의 성장에 조금이나마 기여하기 위해서는 Jenkins를 선택하는..
-
[Docker] Spring boot 프로젝트 배포프로젝트/아카이뷰 2024. 1. 26. 08:52
Spring Boot 프로젝트 배포 왜 궁금했을까 ❓SSAFY 2학기 공통 프로젝트를 수행하는 과정에서 클라이언트와 통신하기 위해 백엔드 서버를 EC2에 띄워야 했다. NGINX 부분은 팀원분이 설정을 해놓은 상태여서 나는 .jar 파일로 빌드만 해서 넘겨주면 되는 상황이었다. DockerfileDocker compose를 이용해서 백엔드 API 서버를 배포하는 식으로 아키텍쳐가 구성되어 있어서 Dockerfile을 이용하여 백엔드 API를 빌드하고 이미지화 하는 식으로 진행하려고 한다.FROM openjdk:17ARG JAR_FILE=build/libs/*.jarCOPY ${JAR_FILE} app.jarEXPOSE 11443ENV TZ Asia/SeoulENTRYPOINT ["java","-jar"..
-
[Docker] Docker란?프로젝트/아카이뷰 2024. 1. 25. 23:20
Docker 왜 궁금했을까 ❓SSAFY 2학기 공통 프로젝트를 수행할 때, CI/CD를 구성하기 위해서는 Docker, Docker compose를 사용해야만 하는 것을 확인했다. 그래서 업무 생산성을 향상시키기 위해 CI/CD 환경 구성이 필수적이었고 이를 구현하기 위해 Docker에 대해 학습을 진행해보았다. Docker란 ❓Docker- 프로세스 격리 기술을 이용하여 더 쉽게 컨테이너를 실행하고 관리할 수 있도록 도와주는 오픈소스 프로젝트- 도커 엔진(Docker Engine) 혹은 도커에 관련된 모든 프로젝트를 지칭Docker Engine컨테이너를 직접 관리하는 주체로서 컨테이너를 제어하고 다양한 기능을 제공 Docker의 작동 원리 What is a Container? | DockerA cont..
-
[Spring boot] BooleanBuilder / BooleanExpression프로젝트/아카이뷰 2024. 1. 24. 09:00
BooleanBuilder / BooleanExpression 왜 궁금했을까❓ArchiVIEW 프로젝트에서 Query DSL을 사용해 동적 쿼리를 작성하는 상황이었다. 이때, 사용되는 함수가 BooleanBuilder나 BooleanExpression을 쓰는데 차이점을 알아보고 프로젝트에 맞는 함수를 사용해보려고 한다. BooleanBuilder와 BooleanExpression의 차이점BooleanBuilder와 BooleanExpression은 동적 쿼리를 처리하는 함수로 둘 사이에 성능차이는 없으며 개발자 스타일에 맞게 사용하면 되는 것 같다.BooleanBuilder는 주로 if문으로 조건을 비교하고 BooleanBuilder에 조건을 더한다.BooleanExpression은 일반적으로 단일 조건..
-
[Spring boot] Query DSL 동적 쿼리프로젝트/아카이뷰 2024. 1. 23. 08:52
Query DSL 동적 쿼리 왜 궁금했을까❓Query DSL을 아카이뷰 프로젝트에 적용하는 과정을 보도록 하겠다. [Spring boot] Query DSLQuery DSL 왜 궁금했을까❓ArchiVIEW의 검색 API를 만들어야 했는데 필터가 존재하여 Spring Data JPA를 사용하기에는 경우의 수를 고려하여 쿼리를 만들어야 했다. 상당히 비효율적이라 생각하여 동적 쿼pslog.co.kr위 포스팅을 통해 Query DSL에 대한 개념을 이해할 수 있다.Query DSL 실습Gradle 설정(Spring Boot 3.x)Query DSL은 JPA 표준이 아니기 때문에 별도로 라이브러리를 추가해야 한다.// QueryDSLimplementation 'com.querydsl:querydsl-jpa:5...
-
[Spring boot] REST, REST API, RESTful프로젝트/아카이뷰 2024. 1. 22. 17:31
REST, REST API, RESTFul 왜 궁금했을까❓API를 통해서 단순히 자원을 교환하는 것을 REST API 서버라고 알고 있었다. 알고보니 규칙이라는 것이 존재했고 그 규칙을 만족해야 REST API 서버라고 부른다는 것을 알았다. 이에 따라 REST의 정의와 규칙에 대해서 깊게 알아보고 ArchiVIEW 프로젝트에 적용해 보려고 한다.REST란?Representational State Transfer의 약자로 자원을 이름으로 구분하여 자원의 정보를 주고받는 것을 의미하여 자원의 표현에 의한 상태 전달을 뜻한다. 1. 자원(resource)의 표현(representation)자원 - 소프트웨어가 관리하는 모든 것ex) 데이터, 그림, 문서 등자원의 표현 - 위 자원들을 표현하기 위한 이름ex)..
-
[Spring boot] JPA N + 1프로젝트/아카이뷰 2024. 1. 21. 21:02
JPA N + 1 왜 궁금했을까❓ArchiVIEW 프로젝트에서 JPA를 활용하여 DB 데이터를 조회하고 있었다. console을 보니 MyBatis에서는 하나의 쿼리로 처리했던 것들이 여러 개의 쿼리로 나눠져서 나가고 있는 것을 확인했다. 이를 찾아보니 N + 1 문제라고 지칭하는 것을 알았고 이를 해결해보려고 한다. [Spring boot] JPA(Java Persistence API)JPA(Java Persistence API) 왜 궁금했을까❓SSAFY 1학기 프로젝트인 Share Your Trip을 할 때, MyBatis를 사용해서 DB에 Query를 날리곤 했는데 타입이나 변수명 등 Java 객체와 불일치 하는 경우가 많아 오류가 많pslog.co.kr [Spring boot] JPA save..
-
[Spring boot] Query DSL프로젝트/아카이뷰 2024. 1. 20. 08:56
Query DSL 왜 궁금했을까❓ArchiVIEW의 검색 API를 만들어야 했는데 필터가 존재하여 Spring Data JPA를 사용하기에는 경우의 수를 고려하여 쿼리를 만들어야 했다. 상당히 비효율적이라 생각하여 동적 쿼리를 지원하는 JPQL과 Query DSL을 고민하던 중 compile시 타입 체크가 가능하여 runtime시 좀 더 안정성있는 Query DSL을 채택했다. Query DSL이란?Query DSL은 정적 타입을 이용하여 SQL 쿼리를 생성하도록 도와주는 프레임워크 Query DSL을 사용하는 이유1. 정적 타입 체크를 통한 안정성 향상JPQL은 개발자가 직접 SQL 쿼리문을 작성하여 오타가 발생할 수 있다. 또한, 컴파일 단계에서 오류가 존재하는지 체크할 수 없다는 문제점이 존재한다...