목록분류 전체보기 (229)
DevKim
더 나은 배포 프로세스를 적용하기 위해 docker + jenkins로 배포해보고, jenkins + webhook으로 배포 자동화까지 간단한 실습에 적용해보면서 내부적으로 어떻게 동작하는지에 대해 생각할 수 있는 시간이었다. 과금 문제로 인해, 지금 당장은 Jenkins 대신 Github Action을 프로젝트에 적용해보려고한다. 현재 프로젝트 구조는 이렇다. 아직 캐싱 서버와, nginx는 도입하지 않았다. 필요하다고 느껴질 때 그 이유와 함께 도입할 예정이다. [ GitThub Action ] Github Action은 Github에서 바로 소프트웨어 Workflow를 자동화할 수 있는 도구이다. 간단하게 말하면 Github에서 직접 제공하는 CI/CD 도구이다. 장점 사용하면서 느꼈던 가장 장점은..
[ 현재 프로젝트 배포과정의 문제점 ] - 팀 프로젝트 이다보니 한명이 인스턴스를 생성한 후, 기능이 수정되거니 추가될 때마다 Filezilla를 이용해서 수동으로 Build & Deploy를 수행하고 있다. 이러한 비효율적인 일을 줄이기 위해 배포 브랜치로 push가 일어나는 순간, 빌드&배포가 이루어지도록 자동화해보자. 실제 프로젝트에 적용하기 전, test 해본 상황을 정리해보려고한다. [ 환경 ] - Amazon Linux - worker instance : aws ec2 t2.micro - Jenkins instance : t2.medium Ps. 이 전에 Docker+Jenkins로 실습했을 때, 프리티어 쓰겠다고 t2.micro로 어찌저찌 해보다가 빌드 몇 번하니까 Jenkins가 돌아가지를..
프로젝트에 CI/CD를 적용해보고 싶다는 생각을 계속 해왔었다. 하지만 어떤 기술을 도입할 땐, why에 대한 대답을 할 수 있어야한다고 생각한다. 현재 프로젝트의 개발 프로세스의 문제점에 대해서 생각해보고, CI/CD를 도입함으로써 얻을 수 있는 이점에 대해 생각해보자. 1. CI란 무엇일까? - CI는 Continuous Integration 즉, 지속적인 통합을 의미한다. 어플리케이션의 새로운 코드 변경 사항이 자동으로 테스트 및 빌드되어 공유 레포지토리에 통합할 수 있다. 2. 현재 개발 프로세스의 문제점 CI가 적용되지 않은 현재 프로젝트에서 많은 불편함을 느꼈다. 현재, 팀원들은 기능별 feature에서 개발한 후 develop 브랜치에 push하고 pull하고 각자의 test 코드를 돌려서 ..
✔ 프로젝트에서 도커를 사용하기 전에, 도커가 뭔지 왜 사용하는지를 먼저 이해해보자 ✔ 도커를 이해하기 전에 VM의 개념을 정확히 잡고 Docker와의 차이점을 알아보자 [ Virtual Machine ] 1. VM (Virtual Machine ) - VM은 말 그대로, 물리적인 컴퓨터 위에 가상 운영체제를 여러개 띄우는 방식이다. - VM은 운영체제와 응용 프로그래밍 사이에서 작동하는 프로그램으로, 가상머신을 설치하면 응용프로그램이 모두 동일한 환경에서 작동하는 것 처럼 보인다. 2. PM (Physical Machine) - 기본적인 서버의 구조로, Physical Hardware 위에 Host OS가 올라가고 그 위에 여러가지 응용프로그램이 실행되는 형태이다. [ VM vs. Container ]..
🏃 Webtooniverse 의 핵심인 웹툰 데이터를 수집해보자 🏃 드디어 기다리고 기다리던 카카오 웹툰이 출시됐다! 기존의 다음웹툰 데이터를 가져오려고했으나, 카카오 웹툰과 합쳐진다는 기사를 보고 출시될 때까지 기다리기로 했다. 사이트를 보자마자 든 생각은, 아..크롤링 하기 쉽지 않겠구나였다. [ 수집할 데이터 ] 크롤링해야 할 웹툰 카테고리는 다음과 같다. 1. 웹툰 원작 - 요일별 작품들의 정보들 2. 소설 원작 - 요일별 작품들의 정보들 3. 완결 웹툰 - 웹툰 원작 50개 + 소설 원작 50개 [ 사이트 분석 이슈 ] "네이버 웹툰 사이트와 달리 카카오 웹툰은 사이트 전체를 selenium으로 자동화하기엔 어려움이 있었다." 1. 사이트만 봐도 알겠지만, 중간중간 영상 썸네일이 있고 영상 썸네..
[ 정적 팩토리란? ] : 정적 팩토리 메서드란 객체 생성의 역할을 하는 클래스 메서드라는 의미로 요약해볼 수 있다. [ 정적 팩토리 메서드는 왜 사용할까? ] : 내가 코드를 짜면서 느낀 장점은 다음과 같다. 1. 이름을 가질 수 있다. - 이건 과거에 김영한님의 JPA 강의를 들을 때의 실습 코드이다. new로 Order를 생성하면 정확한 의미를 알 수 없다. 반대로 다음과 같이 createOrder이라는 이름을 가지면, 주문을 생성하는 메서드구나! 를 명시적으로 알 수 있다. /** * 주문 생성 메서드 * todo : 주문 회원, 배송 정보, 상품명을 입력하여 주문 생성 */ public static Order createOrder (Member member, Delivery delivery, O..
[ 요구 사항 분석 ] - 현재 페이지의 웹툰과 비슷한 장르의 웹툰들의 정보를 랜덤으로 뿌려준다. [Querydsl 세팅 ] 매번 2개의 Repository를 의존성으로 받지 않기 위해서, Data Jpa에서는 Custom Repository를 JpaRepository 상속 클래스에서 사용할 수 있게끔 지원한다. 사실 기본 CRUD도 Querydsl만을 사용하여, 상속/구현 없는 Repository를 만들어 사용할 수 있지만 빠르게 개발하기 위해 기본 CRUD는 JpaRepository의 도움을 받아서 코드를 작성하였다. 리팩토링 단계에서 Querydsl만을 가져가는 것에 대해 고려해보기로하자. 1. 어느 곳에서나 JPAQueryFactory를 주입받아 Querydsl을 사용할 수 있게끔 Config 파..
[ 요구 사항 분석 ] API Method request response 웹툰에 별점주기 클릭 PUT /api/v1/reviews/star { "webtoonId": 웹툰 id "userPointNumber": 4.5 } { "reviewId": 리뷰 Id } [ 비즈니스 로직 ] 1. 유저가 해당 웹툰에 별점을 준적이 있는지 체크한다. - 해당 유저의 FK와 해당 웹툰 FK를 가진 리뷰의 존재 유무를 확인한다. Webtoon findWebtoon = webtoonRepository.findById(reviewStarDto.getWebtoonId()).orElseThrow( () -> new IllegalArgumentException("해당 웹툰이 존재하지 않습니다") ); Review findRevi..