본문 바로가기

전체 글70

[Project] Gradle Build 시 JaCoCo 연동하기 !!! 구글링을 하기 전에 공식문서를 보고 먼저 적용해보기 🕵🏻‍♂️ https://docs.gradle.org/current/userguide/jacoco_plugin.html#sec:configuring_the_jacoco_plugin https://www.eclemma.org/jacoco/trunk/index.html The JaCoCo Plugin To get started, apply the JaCoCo plugin to the project you want to calculate code coverage for. Example 1. Applying the JaCoCo plugin build.gradle plugins { id 'jacoco' } build.gradle.kts If the Jav.. 2021. 12. 5.
[Spring] JUnit5 사용하기 인프런 학습을 하다보니 강의와 동일하게 설정을 해도 테스트 시 지원되지 않는 코드들이 꽤 존재했습니다. 이유를 살펴보니 인프런 강의는 JUnit4를 사용하고, 저는 JUnit5로 의존성을 추가했기 때문에 지원되는 메소드 및 어노테이션이 달랐습니다. 오늘은 JUnit5의 특징과 JUnit4와 다른점은 무엇인지 간략히 알아보겠습니다. 1. JUnit5 의 특징 이전 버전의 JUnit과는 달리 JUnit5는 세가지의 모듈로 구성됩니다. JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform : JVM에서 실행되는 테스트 프레임워크로 테스트 프레임워크를 개발하기 위한 TestEngine API를 정의합니다. JUnit Jupiter : JU.. 2021. 12. 5.
[Spring] gradle build 실행 에러 프로젝트 회원가입 기능 구현을 마치고 build 테스트를 진행하였습니다. 하지만, develop 브랜치에 PR 을 올리니 local에서는 잘 build 가 잘만 되었었는데 PR 시 build 오류가 났습니다!! 맨 처음에는 mapperTest() ,serviceTest() 에서 오류가 난 것만 보고 local이랑 왜 다르지,, 하며 멘토님께 질문을 드렸습니다. caused by 가 중요한 데 그 부분을 안보고 질문을 드렸죠,,^^ 멘토님께서 로그를 보는 습관을 들이라고 말씀해주셨고 그때서야 caused by 부분을 보게 되었습니다..(반성😥) 현재 진행중인 프로젝트는 임시 DB로 in-memory 디비인 h2 디비를 사용하고 있습니다. 즉, 제 local 컴퓨터에는 존재하는 테이블이 다른 컴퓨터에서는 존.. 2021. 11. 21.
[Spring] @WebMvcTest 단위 테스트시 Bean 주입 에러 해결 들어가며.. 약..9시간..? 동안 삽질하게 했던 에러에 대해서 설명하려 합니다.. 9시간 넘게 헤매다가 너무나도 허무한 방법으로 해결했습니다 ^_ㅠ 발생한 오류 SpringBoot 에서 Controller 클래스를 테스트하는 코드를 작성하고 실행하니 다음과 같은 에러가 발생했습니다. Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.facto.. 2021. 11. 21.
[Spring] RESTful API 🤷‍♂️ REST? REST API? RESTful API? REST 란 웹(HTTP)의 장점을 최대한 활용할 수 있는 아키텍쳐입니다. REST API(REpresentational State Transfer)는 REST 아키텍쳐 스타일을 따르는 API로, 웹상에서 사용되는 여러 리소스를 HTTP URI(Resourse)로 표현하고, 해당 리소스에 대한 행위를 HTTP Method( GET, POST, PUT, PATCH, DELETE )로 정의하여 특정한 형태(자원의 형태)로 전달하는 방식을 말합니다. RESTful API란 REST API 설계 가이드를 따라 API를 만들어 웹서비스를 제공하면 해당 웹 서비스는 RESTful하다고 말하며 RESTful 한 API를 RESTful API라고 합니다. R.. 2021. 11. 16.
[Project] Github action을 활용하여 PR시 자동 Build 설정하기 (CI설정) Github action을 통해서 깃허브 자체적으로 CI & CD를 진행할 수 있습니다. 오늘은 Gradle CI를 적용하는 방법만 포스팅할 예정입니다. 프로젝트 환경은 Spring-boot Gradle 입니다. Git-Flow로 브랜치 관리를 하는 프로젝트라 develop 브랜치에 pull request 또는 push 시 자동으로 build가 되는 설정을 해보려고 합니다. Github Action을 통해 CI 설정하기 1. 우선 Github Repository에서 action 카테고리로 들어갑니다. 2. 그 뒤 set up a workflow yourself 를 클릭하여 직접적으로 파일을 생성하여 만들수도 있지만, 저는 이미 만들어져 있는 workflow를 사용하였습니다. 3. Continuous in.. 2021. 11. 13.
[Project] Github PR->merge 시 issue 자동 close 방법 프로젝트를 진행하며, 저희는 기능 task를 Github issue로 관리하기로 하였습니다. 개발하고자 하는 기능들을 issue로 등록해놓고 해당 issue 기능 개발을 마치고 develop 브랜치에 merge가 되면 close를 하는 형태로 진행예정입니다. 오늘은 pull request 시에 issue를 연결하고 pull request가 병합될 때 issue를 자동으로 닫을 수 있는 방법에 대해서 알아보겠습니다. Issue 생성하기 Github issue의 생성방법은 아주 간단합니다. Github Repository 에 들어가면 Code 카테고리 옆 Issues 라는 카테고리가 존재합니다. 여기로 들어간 뒤 New issue를 클릭하여 생성하면 됩니다. 이렇게 issue를 생성하고 나면 아래의 사진과 .. 2021. 11. 13.
[Project] Git-flow master 및 develop branch 설정 프로젝트를 진행하며, 팀원과 브랜치 관리를 위해 Git-Flow 전략을 사용하기로 결정하였습니다. Git-Flow 전략에 대해 간략하게 설명하고 넘어가자면, Git-Flow는 5가지의 브랜치를 이용하여 운영하는 브랜치 전략입니다. 이는 항상 유지되는 메인브랜치(master, develop) 브랜치와 일정 기간동안 유지되는 보조 브랜치( feature, release, hotfix )로 구성되어 있습니다. 메인브랜치 master : 제품으로 출시될 수 있는 브랜치 develop : 다음 출시 버전을 개발하는 브랜치 보조브랜치 : merge가 되면 사라지는 브랜치 feature : 기능을 개발하는 브랜치 release : 이번 출시 버전을 준비하는 브랜치 hotfix : 출시 버전에서 발생한 버그를 수정하는.. 2021. 11. 13.
다중 서버에서의 Session 불일치 현상과 해결 방법 이제 막 프로젝트를 시작하며 가장 먼저 구현하려고 생각한 것은 회원 로그인 기능입니다. 이 로그인 기능을 구현하기에 앞서, 만약 내가 만든 서비스가 하나의 서버로 감당할 수 없을만큼 성장했을 경우엔 어떻게 해야할까? 부터 고민을 하기 시작했습니다. 이 고민에 대해서 생각하며 Scale-up 과 Scale-out에 대해 알아보았고, Scale-up 을 사용한다면 하나의 서버로 모든 트래픽을 감당해야하기 때문에 위험부담이 크다는 생각이 들었습니다. 그렇기에 Scale-out 방식을 고려하다 보니, 서버가 여러대일 때 Session은 어떻게 관리가 되는지에 대한 질문부터 어떻게 해결해야하는지 고민하는 시간을 가졌습니다. 고민하는 과정과 이를 알아가는 과정을 적어보겠습니다. Session에 대해 그리고 다중서버.. 2021. 11. 7.
Scale-up 과 Scale-out에 대해서 알아보자 서비스를 운영하다 보면 사용자가 지속적으로 증가함으로 데이터 양이 늘거나 CPU나 메모리 사용량이 늘어 하나의 서버로는 감당이 안되는 경우가 존재합니다. 이런 경우 서버 확장을 해야 합니다. 오늘은 서버 확장 방법인 Scale-Up(스케일업)과 Scale-out(스케일아웃) 에 대해서 살펴보도록 하겠습니다. Scale-up (스케일업) 기존 시스템에 CPU, 메모리, 디스크와 같은 내부 컴포넌트 용량을 키우거나 , 이것이 불가능할 경우 새로 더 큰 용량의 시스템을 구매해 서비스를 옮기는 방법을 말합니다. 즉, 하드웨어 적인 부분을 교체 또는 새로 구매하는 것을 말합니다. 이는 부품을 쉽게 추가할 수 있으면 시스템 설계 변경 없이 서비스 사용량을 쉽게 늘릴 수 있다는 장점이 있습니다. 하지만, 스케일 업을.. 2021. 11. 6.