반응형

전체 글 130

JUnit5 사용해보기

JUnit은 Java를 위한 단위 테스트 (Unit Test) 프레임워크로 개발하는 프로그램에 대한 테스트케이스를 쉽게 작성할 수 있도록 도와줍니다. 그동안 JUnit4를 주로 사용해왔는데, 최근들어 JUnit5가 있음을 알게되고(사실 나온지는 2년이 넘은..) 어떤 차이점이 있는지 알아보고 사용해보려합니다. JUnit4에서 JUnit5로 넘어오며 달라진 점 먼저 JUnit5를 사용하기 위해서는 아래 지원범위에 만족하는지 확인해봐야합니다. Java8 이상 지원 IntelliJ IDEA 2016.2 이후 지원 Eclipse Oxygen 이후 지원 Kotlin 지원 JUnit5 User Guide 문서 첫 단락에 보면 다음과 같은 문구가 적혀있습니다. Unlike previous versions of JUn..

Back-End/Java 2020.02.01

HikariCP와 커넥션 누수(Connection Leak) 관련 트러블슈팅

문제 발생운영중인 서비스에서 사용하는 DB에서 특정 테이블들을 분리하여 별도 DB로 구축하는 일이 생겼습니다. 때문에 이를 위해 Multi Datasource를 적용하였습니다.기존 서비스는 Tomcat connection pool이 적용되어있었는데, 이번 작업을 하며 HikariCP로 변경하였습니다.(참고로 Spring Boot 2.0 부터는 HikariCP가 기본 커넥션풀이라고 합니다.)In Spring Boot 1.x, Tomcat connection pool was the default connection pool but in Spring Boot 2.x HikariCP is the default connection pool.적용을 완료하고 정상동작을 확인한 후 개발환경에 반영해둔 다음날..서비스 ..

HikariCP Connection Pool 해제 이슈

몇 일 전, 개발환경에 구축되어있는 백엔드 시스템의 커넥션풀을 변경해야하는 일이 생겨 기존 Tomcat 커넥션풀 (tomcat-dbcp)에서 HikariCP로 변경하였습니다. 변경하면서 기존 설정되어있던 수치들을 HikariCP에서 제공하는 옵션에 맞추어 마이그레이션 했는데요. 완료 후 특별한 문제점은 보이지 않았습니다. 하지만 다음 날 출근 후…. 해당 시스템의 API를 호출하자 갑자기 아래와 같은 오류 메시지가 나오며 시스템이 정상적으로 동작하지 않는 상태인 것이 확인되었습니다. [2020-01-10 08:49:08,143 +0900] [WARN] [c.z.h.p.ProxyConnection] GAMEDB-POOL - Connection com.mysql.jdbc.JDBC4Connection@158c..

IT기본 2020.01.15

gRPC Reference - 예제

전 편에서 gRPC에 대한 설명과 특징을 알아보았습니다. 이번 포스트에서는 grpc-java 모듈을 활용한 몇 가지 예제코드를 소개하고, 실제 프로젝트에 적용하는 방안에 대해 소개해보겠습니다. gRPC Reference - 개요 및 특징 gRPC Basic 프로젝트 생성 Java : 1.8 gRPC : 1.25.0 ProtoBuf : 3.11.0 pom.xml 설정 gRPC + Protobuf 의존성 설정 스텁 생성을 위해 protoc 플러그인 설정 proto 컴파일 -> 애플리케이션 컴파일 순으로 진행되도록 설정 4.0.0 com.nhn.gia gia-grpc 1.0-SNAPSHOT UTF-8 1.25.0 3.11.0 3.11.0 1.7 1.7 io.grpc grpc-netty-shaded runtim..

기타 2020.01.14

gRPC Reference - 개요 및 특징

1. gRPC 란 Protocol Buffer를 IDL (Interface Definition Language)로 사용하는 RPC 프레임워크 구글에서 10년 이상동안 MSA 아키텍쳐 이하 수많은 시스템들, 데이터 센터 간 통신을 위해 사용하던 범용 RPC 프레임워크인 Stubby를 오픈소스화해 공개한 것 1.1. RPC란? RPC (Remote Procedure Call)은 별도의 원격제어 없이 프로세스간 함수나 프로시저를 호출할 수 있도록 하는 통신 기술 서로 통신하는 양 측의 Request, Response에 대한 인터페이스를 정의 후 양 측 프로그래밍 언어에 맞는 코드로 변환해야함. 이 때 인터페이스를 정의하는 용어는 IDL(Interface Definition Language)라 함 IDL이 컴파..

기타 2020.01.13

Spring Ehcache 사용 간략한 정리

1. Spring Cache Abstraction https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-caching.html#boot-features-caching-provider 2. 적용2-1. @EnableCaching Spring Boot Application 설정시 @EnableCaching 어노테이션 추가하여 Application에 캐시 기능 사용하겠다는 것을 알린다 @SpringBootApplication @ComponentScan("com.nhnent.gia") @EntityScan(basePackages = {"com.nhnent.gia.model"}, basePackageClasses = {Applic..

mac terminal 에서 특정 프로젝트를 vscode 또는 IntelliJ 실행하기

mac 사용하다 보면 ide에서 Finder UI를 통해 특정 프로젝트를 open 하는 일이 자주 있는데요. 저의 경우 vscode와 IntelliJ에서 그런 경우가 자주 있는 편입니다. 특정 프로젝트를 vscode로 실행하기 vscode 의 경우 아주 간단합니다. 터미널에서 프로젝트 경로로 이동한 후 code . 명령어를 입력하면 해당 프로젝트 open으로 vscode가 실행됩니다. cd 프로젝트경로 code . 특정 프로젝트를 IntelliJ로 실행하기 IntelliJ의 경우도 vscode와 유사하지만 1가지 차이점이 있습니다. IntelliJ 실행 시 사용하는 idea 명령어가 있는 경로가 환경변수에 등록되어 있지 않기 때문인데요. 이는 IntelliJ에서 간단히 추가가 가능합니다. IntelliJ..

기타 2019.12.21

git commit 날짜, author 변경하기

git을 사용하면 거의 대부분 원격 저장소로 github을 많이 이용합니다. github엔 저장소에 commit 내역을 시각화하여 보여주는 기능(잔디밭..)이 있는데요. 가끔 실수로 날짜를 못지키거나, author를 잘못지정해 색칠이 안되는 경우가 있습니다. 잔디밭에 신경을 쓰시는 분이라면 빈 구멍이 굉장히 신경이 쓰이실수 있는데요. 이 때 사용할 수 있는 방법을 공유합니다. git commit 변경 꼭 잔디밭이 아니더라도 commit의 날짜를 변경해야하는 경우는 종종 있을것입니다. 기본적으로 commit 변경은 변경할 commit을 찾는것에서 시작합니다. 1. commit 히스토리 확인 git log git log 명령어를 실행하면 아래와 같이 commit 히스토리를 확인할 수 있습니다. 아래 내역에서..

DevOps 2019.12.21

NHN FORWARD 2019 후기

NHN Forward 2019 컨퍼런스 참여 후기입니다. NHN Forward 2019 지난 11월 27일 NHN Forward 2019 컨퍼런스에 참가했습니다. 회사가 회사다 보니 다양한 컨텐츠들이 준비되어 있었는데요. 크게 아래와 같았습니다. 세션 발표세션 스몰 스텝 프런트엔드 상담소 커뮤니티 라운지 워크숍 핸즈온 랩 프론트엔드 전문 개발자분들이 직접 고민을 들어주고 대화를 할 수 있는 프런트엔드 상담소나 평소에 궁금했거나 해보고 싶었던 것들을 쉽게 따라해보고 경혐해 볼 수 있었던 핸즈온 랩 등 준비를 정말 많이 했다는 느낌이 들었습니다. 특히 발표세션에서는 실무에서 겪을수 있는 문제점들이나 겪었던 문제들을 사례를 많이 공유받을수 있어 유익한 시간이었습니다. 발표세션은 총 7개 트랙에서 시간대별로 각..

기타 2019.12.16

리눅스 SSH, MySQL 접속 지연 문제

신규로 발급받은 서버에서 SSH, MySQL 접속 시 상당한 시간이 딜레이되는 현상이 있었습니다. 구글링 해본 결과 서버 측에서 접속한 클라이언트의 IP를 resolve하는 과정에서 발생하는 DNS lookup 등으로 발생하는 지연이 원인이었습니다. 장비, 환경 여러가지에 따라 다르겠지만 제 경우엔 Spring Boot 애플리케이션 구동하는데 DB접속하는 부분에서 20초가량 지연되는 심각한 상황이었습니다. 심각한 상황과 달리 해결방법은 아주 심플하고 간단했습니다. MySQL 접속 지연 문제 해결 my.cnf (주로 /etc/my.cnf 에 위치함) 파일에 클라이언트 IP resolve 과정을 스킵하는 설정을 추가해줍니다. 바로 skip-name-resolve 옵션을 mysqld 섹션에 넣어주면 됩니다. ..

DevOps/Unix, Linux 2019.12.16