본문 바로가기

Spring boot 설정 파일 yaml 사용법 (설정 파일을 읽어서 bean으로 필요할 때 사용하는 방법) Spring boot의 설정 파일 YAML을 사용하는 방법 대부분의 애플리케이션에서 설정과 관련된 변수들은 보통 파일에다가 쓰고 읽어오는 방식으로 프로그래밍한다.외부에 설정파일을 넣을 수도 있고 내부적으로 프로젝트에 넣을 수도 있다.해당 파일들은 포맷(.properties, .ini 등)도 다양하다.스프링 부트에서도 설정에 대한 내용을 다양한 파일에 적고 읽어와 사용하는데 그 중에서 가장 적합하고 스프링 부트에서 권장하는 형식인 yaml에 대해서 간단히 설명하고 사용해본다.왜 YAML 이어야 하는가?-> 사람이 보기 편하다!1234567environments: dev: url: http://dev.example.com name: Developer Setup prod: url: http://another...
데이터베이스 성능 개선 포인트! 데이터베이스 Call 수 줄이기, 네트워크 부하 줄이기(array processing, 부분 범위 처리) 데이터베이스 SQL 쿼리 호출(Call) 수 줄이기 DB 성능 최적화를 하기 위해서 가볍게 개선 포인트를 알아보는 시간을 지난 포스트에 이어 갖는다.지난 포스트에서는 SQL 쿼리가 날라왔을 때 SQL 쿼리를 파싱하고 실행 계획을 캐시하고 최적화하는 부분을 살펴봤다.이번 포스트에서는 애초에 데이터베이스에 쿼리를 적게 날리는 즉, 호출 수를 줄이는 부분과 오고가는 데이터의 양(네트워크 부하)을 줄이는 부분을 알아볼 것이다.(다음 포스트에서는 데이터베이스가 파일시스템(ex. SSD)과 데이터 I/O하는 부분에서 최적화를 알아볼 것이다. 아래 그림을 참조하면 좋다.)데이터베이스 Call과 성능 위에서는 편의를 위해 애플리케이션을 통해 호출되는 Call이 전부인양 말했지만 엄밀히 따지면 Call을 종류는 다양하다..
SQL 파싱 처리 과정과 성능 향상 포인트 최적화!(하드파싱/소프트파싱 차이, SQL 쿼리 파싱 최적화 과정, 바인드 변수 사용) SQL 성능에 큰 영향을 미치는 병목 진단하기 지난 포스트에서 오라클의 구조에 대해서 알아보았다.이제 SQL 쿼리를 처리하는 과정을 알아보고 어느 부분이 관심을 갖고 파헤쳐봐야 하는 부분인지 가볍게 짚어보려고 한다.크게 나눠서 어느 부분이 대용량 SQL 처리에서 성능에 영향을 끼치는지를 확인하고 하나하나 개선하는 방법을 살펴보려고 한다. 다른 포스트에서. (지금은 큰 맥락만 이해)SQL 처리 과정과 성능 Point 1. SQL 쿼리 입력!2. SQL Parser가 SQL 문장에 문법적 오류가 없는지 확인 -> 문법적 오류가 없으면 의미상 오류가 없는지 확인- 의미상의 오류는 없는 컬럼을 쓴다든지, 권한이 없는 객체를 사용했다든지 하는 오류3. SQL 문장을 해시 함수로부터 변환한 후, 해시 값으로 라이브..
멀티 스레드 병렬 프로그래밍을 하기 전 반드시 읽어야할 것들 - Java 객체 편(객체 동기화, 클래스의 쓰레드 안정성) JAVA 멀티 스레드 환경에서 "객체"를 다루기 전 알아야 할 것들 제목은 거창하지만 내용이 빈약할 수 있음을 미리 알립니다...java.util.concurrent 패키지 내용을 정리하려고 하다가 기본 지식이 부족하다 생각하여 JAVA 병렬 프로그래밍이라는 책을 읽고 멀티 스레드 프로그래밍 환경에서 "Thread-safe"하게 만드는 기본 지식을 정리한 것입니다.+ 스레드에 대한 어느정도 지식, 경험이 있는 분들이 보기 좋습니다. (초급 개발자 정도? 중급이상은 볼 필요가 없을 겁니다...)스레드 안정성(Thread-safe) : 여러 스레드가 어떤 변수나 함수 또는 클래스 객체에 접근할 때 계속해서 개발자가 의도한대로 정확하게 동작하하다는 것로 정의한다. 호출하는(사용하는) 쪽에서 특별한 동기화 코드..
패킷 분석 툴, 와이어샤크(WireShark) 사용법 (필터링, 검증, 처음 사용해보는 사람을 위한 안내) 와이어샤크(Wireshark) 와이퍼샤크는 오픈 소스 패킷 분석 프로그램으로 "pcap"을 이용하여 패킷을 잡아내는 것이 주요 기능이다.윈도우뿐만 아니라 리눅스같은 유닉스 계열의 운영체제에서도 사용된다.무차별 모드(promiscuous mode)를 지원해서 나한테 들어오고 나가는 패킷만 얻을 수 있는 것이 아니라 브로드캐스트나 멀티캐스트 트래픽도 얻을 수 있다. (100% 모든 것을 확인할 수 있는 것은 아님.)* 여기서 사용 목적이 좀 나뉠 수 있다.패킷을 분석하는 툴이기 때문에 해당 패킷을 보고 싶은 사람이 사용할 수도 있고, pcap 라이브러리를 이용해서 패킷 분석 프로그램을 개발할 수도 있다.또한 패킷 복호화를 통해 해킹(?)을 해볼 수 있고, 보안을 배울 수도 있다.하지만, 나 같은 일반적인 개..
강력한 자바 오픈소스 로깅 프레임워크, logback 사용법 with example(스프링 부트에서 logback 가이드, logback-spring.xml 설정하기) Logback 소개Logback은 "자바 오픈소스 로깅 프레임워크"로 SLF4J의 구현체이자 스프링 부트의 기본 로그 객체다.log4j, log4j2, JUL(java.util.logging)과 성능을 비교했을 때 logback은 훌륭한 성능을 보여준다.그리고 결정적으로 자바 프로그램에서 로그를 사용할 때 가장 많이 사용되고 있기 때문에 알아두어야 한다.Logback을 사용하기 위해서 아래의 모듈을 가져와야 한다. (maven 사용)12345678 ch.qos.logback logback-classic 1.2.3 test Colored by Color Scripter * 스프링부트에서는 기본 로그이기 때문에 굳이 위의 dependency를 추가하지 않아도 사용가능하다.spring-boot-starter-..
웹애플리케이션 서비스가 아닌 웹서비스(WebService), WSDL을 아시나요? (WSDL 문법, 구조, 구문 분석) 웹서비스(WebService)는 무엇인가? * 꽤나 오래된 기술이라서 쉽게 변화하기 힘들거나 변화에 보수적이고 오래전 부터 해왔던 업계에 적용되어 사용되고 있다. (일반적인 소프트웨어 회사에 가는 사람들은 굳이 볼 필요가 없다.)위키백과에 의하면 '네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템' 이라고 한다. (상호작용을 위해서는 프로토콜이 필요하다는 것은 예상가능하다.)웹서비스는 웹 애플리케이션 서비스와 다르다.웹서비스는 쉽게 설명하기 위해 비약을 하면 API 서버와 유사하다.어떠한 애플리케이션이든 API서버는 "지정된 올바른 요청"을 하면 그에 해당하는 "답변"을 준다.마찬가지로 웹서비스는 애플리케이션들이 플랫폼과 프로그래밍 언어와는 독립된 방식으로 통신할 수..
Apache POI를 이용해서 자바에서 엑셀(xls, xlsx)파일 입출력 하는 방법(엑셀 자료 정리를 matlab 대신 자바로 해버렸습니다.) Apache POI를 이용한 엑셀 파일 입출력 보통 자바에서 .log(txt), .csv, .properties, .ini 같은 파일을 자주 사용하지 엑셀파일은 잘 다루지 않는다.하지만 대량의 자료를 정리할 필요가 있어서 한 번 사용해보았다.- Apache POI 라이브러리 적용하기 메이븐을 이용해서 라이브러리를 불러왔다. pom.xml에 추가한다. (현재 3.17버전까지 나왔다.)12345 org.apache.poi poi 3.13 - 코드 보기 전 상황 요약 : 이 안에 아래의 엑셀파일 리스트들이 쭉 있음 : 년도도 파일마다 다름 : 어떤 날은 측정을 하고 어떤 날은 측정을 안한 상황 이 상황에서 원하는 결과값은?해당 디렉토리별로 엑셀 시트를 만들어서 왼쪽에 날짜와 측정값을 세로로 정렬해보자!(여기서..