의식적으로 TDD를 실천하기 위한 방법 중 하나로 Jacoco라는 Java 진영의 코드의 커버리지를 체크하는 오픈 소스 라이브러리를 사용해봤습니다. Jacoco를 적용하면서 코드 커버리지라는 용어를 막연하게만 알고 있었지 정확한 의미를 알지 못한다고 생각해서 다시 한번
먼저, Elasticsearch에 개념부터 정리하면 Apache Lucene(아파치 루씬) 기반의 Java 오픈소스 분산 검색 엔진입니다. Elasticsearch는 역 색인(Inverted Index)를 사용합니다. ES는 문서 -> 내용으로 저장하는 것 외에 단어
회사에서 개발을 하고 Github로 Push 후 빌드를 할 때 Jenkins라는 툴을 사용했는데 사실 단순히 배포만 하는 툴로만 알고 있다가 이번에 조금이라도 더 Jenkins에 대해서 알고 싶어서 로컬환경에서 실습을 해봤습니다.젠킨스에 대해서 알기 전에 CI/CD라는
예전에 회사 프로젝트를 보면 클래스에서 Serializable 인터페이스를 구현한 것을 자주 볼 수 있었습니다. 그 당시에는 객체를 바이너리로 변환하기 위해 직렬화 인터페이스를 구현한다는 정도만 생각을 했었는데, 정확히 왜 하는지 궁금해서 찾아보았습니다.Java 직렬화
Apach JMter를 사용하기 위해 알아야하는 용어들에 대해서 정리하였습니다. 기본적으로 REST API 기능 개발을 하고 부하 테스트를 위해 많이 사용하는 툴 중 하나이기 때문에 배워두면 유용합니다.JMeter는 원하는 만큼 쓰레드를 생성하여 서버에 부하를 줄 수
스프링 부트 책을 읽다가 TDD(Test Driven Development)라는 용어가 심심치 않게 등장하였고, 그 이후에 남들이 개발할 때 TDD로 개발을 하면 좋다고 해서 저도 막연하게 트렌디에 쫒기지 않기 위해서 배웠습니다.시간이 흘러서 지금도 Controller
최근에 금융쪽 도메인에서 개발 업무를 하는 친구한테 돈을 계산할때 자료형으로 double, float보다 BigDecimal이라는 자료형을 사용한다고 들었습니다. 그 이유를 물어보니 위 자료형(double, float)보다 BigDecimal이 미세한 숫자의 변동도 허
도커는 어떠한 프로그램도 컨테이너로 만들 수 있고 어디서든 돌아갑니다.가상머신과의 차이점은 가상머신처럼 독립적으로 실행되지만, 더 빠르고 더 쉽고, 더 효율적입니다.예전에는 서버를 운영하기 위해서 문서로 서버 운영방법을 기록했지만, 시간이 지나면서 문서의 정확성과 서버
백엔드 공부를 하면서 성능을 더 높이기 위해 빠르게 조회용으로 쓰는 NoSQL에 대해서 많이 들어봤습니다. 그 중에서 대표적인 몽고 DB와 Redis가 유명한데 Redis가 무엇인지 궁금하여 찾아봤습니다.Redis는 In-Memory 기반의 키-값 형식의 비정형 데이터
GitHub와 젠킨스를 SSH로 연동했다면, 이제 AWS(Amazone Web Service)에서 제공하는 가장 유명한 EC2(Elastic Compute Cloud)에 배포를 해봤습니다.먼저, Jenkins에서 제공해주는 플러그인 중에 SSH로 EC2에 jar 배포
젠킨스와 GitHub를 연동하여 프로젝트 소스를 가져와서 빌드하는 방법이 여러가지가 있지만, 사용자명과 비밀번호 인증방식은 보안상 추천하지 않기 때문에 SSH기반으로 젠킨스와 GitHub를 연동하는 방법에 대해서 직접 구축해봤습니다.Jenkins 설치가 안되어있다면 J
젠킨스와 GitHub를 연동하여 프로젝트 소스를 가져와서 빌드하는 방법이 여러가지가 있지만, 사용자명과 비밀번호 인증방식은 보안상 추천하지 않기 때문에 SSH기반으로 젠킨스와 GitHub를 연동하는 방법에 대해서 직접 구축해봤습니다.먼저, GitHub와 연동해야 할 대
프론트에서 사용자가 API 요청을 위해 전달한 파라미터들을 검증하겠지만, 표현 계층 (controller)에서도 검증을 하여 안정성을 높이는 것도 중요한 부분이라고 생각합니다.이 경우에는 javax.validation에서 제공해주는 다양한 검증 어노테이션을 사용할 수
Spring Boot에서 클라이어트로부터 JSON String 포맷으로 데이터를 주고 받을 경우 간혹 Javascript에서 Snake Case 방식으로 key 값을 전송하는 경우가 있습니다.스네이크 케이스는 phone_number 처럼 단어마다 언더스코어가 들어가는
각 클래스나 메서드, 프로퍼티의 접근 범위를 가시성(Visibility)이라고 합니다. 클래스에서 민감하거나 불필요한 부분은 숨기고 사용하기 위해 필요한 부분만 공개하듯이 각 클래스나 메서드, 프로퍼티에 가시성 지시자에 의해 공개할 부분과 숨길 부분을 정할 수 있습니다
Intellij에서 코틀린 프로젝트를 생성하고, 마치 대학생때 가장 먼저 접하는 프로그래밍 대표 예제 Hello Kotlin!을 콘솔창에 띄우는 예제를 작성하였습니다.위의 kotlin 파일에서 main() 함수만 정의하고 실행시키면 콘솔에 정상적으로 Hello Kotl
Spring Boot에서 빌드 툴로 gradle을 사용할 경우에 이제까지 모르고 썼던 코드들에 대해서 정리를 해봤습니다.먼저, 의존성 라이브러리를 땡겨오기 위해 작성하는 build.script에 대해서 살펴보겠습니다.buildscript는 gradle로 task를 수행
Cursor 방식은 DB와 커넥션을 맺은 후, Cursot를 한칸씩 옮기면서 지속적으로 데이터를 가져옵니다. DB와 어플리케이션 사이 통로를 하나 연결해서 하나씩 데이터를 가져온다고 생각하면 됩니다.JdbcCursorItemReaderHibernateCursorItem
@JobScope와 @StepScope는 스프링의 기본 Scope인 싱글톤 방식과는 대치되는 역할입니다.Bean의 생성 시점이 스프링 애플리케이션이 실행되는 시점이 아닌 @JobScope, @StepScope가 명시된 메서드가 실행될 때까지 지연시키는 것을 의미합니다.
위에서 살펴본 스프링 부트 배치 컴포넌트들을 이용하여 커뮤니티 사이트에 가입한 회원 중 1년이 지나도록 상태 변화가 없는 회원을 휴먼회원으로 전환하는 배치 예제코드를 작성하였습니다.Java 8Gradle 6.3Spring Boot 2.3.0 RELEASEIntelliJ