분류 전체보기 243

[MyBatis] MyBatis란

MyBatis란? MyBatis는 객체 지향 언어인 Java의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 도와주는 퍼시스턴스 프레임워크(Persistence Framework, 데이터를 다루는 클래스 및 설정파일 집합)이다. MyBatis는 JDBC를 통해 RDBMS에 엑세스하는 작업을 캡슐화하고 기존 JDBC의 중복작업을 간소화해준다. 또한 XML파일의 형태인 mapper를 통해 프로그램 코드로 부터 SQL 쿼리를 분리되는 환경을 제공하고 Java 객체와 매핑하는 작업을 도와준다. 추가적으로 다음과 같은 특징이 있다. 기존 JDBC보다 사용하기 편리 다른 ORM(Object Relational Mapping)프레임워크에 비해 추가적인 학습의 부담이 적음 복잡한 쿼리 또는 다이나믹한 쿼리를 지원 프로그램..

Java&Web 2020.12.31

[Logging] slf4j(Simple Logging Facade For Java)란

[Logging] slf4j, log4j, logback, log4j2 [Logging] slf4j, log4j, logback, log4j2 로그(log)는 소프트웨어의 이벤트를 기록하는 것으로써, 소프트웨어의 동작상태를 파악하고 문제가 발생했을 때 이 동작 파악을 통해서 소프트웨어의 문제를 찾아내고 해결하기 위해 디자인 되 minkwon4.tistory.com 지난번 글에서 Java의 로깅 프레임워크인 slf4j, log4j, logback, log4j2에 대해 알아보았다. 그 중 slf4j에 대해 깊게 조사해보았다. slf4j란? slf4j는 Simple Logging Facade For Java의 약자로써 slf4j의 공식 문서에 따르면 "slf4j는 다양한 로깅 프레임 워크(ex. java.ut..

Java&Web 2020.12.30

[Maven] Maven Profile을 이용한 Springboot 배포서버 별 환경 구성하기

Springboot를 개발하고 배포를 하다보면 다양한 서버환경을 만나게 된다. 예를 들면 하나의 애플리케이션 출시되기 전까지 다음과 같은 서버 환경을 거칠수도 있다. Local 서버 : 각 개발자들의 로컬 환경에 띄우는 서버 Alpha 서버 : 통합 코드로 띄우는 서버 Beta 서버 : Client 개발자 연동 및 QA 테스트 환경 제공 Staging 서버 : Real 서버와 동일 환경 설정 후 테스트 Real 서버 : 실제 사용자의 게임 처리 위의 서버 환경은 LINE의 Rangers 게임 개발팀의 서버환경이다(출처 : LINE Rangers 신입사원의 서버 분석기). 이처럼 한 애플리케이션에 대해 다양한 서버환경이 존재하고 각 서버환경마다 다른 개발환경들(DB설정, log설정, path설정 등)이 적..

Java&Web 2020.12.29

[Logging] Springboot에 Log4j2 설정하기

[Logging] slf4j, log4j, logback, log4j2 [Logging] slf4j, log4j, logback, log4j2 로그(log)는 소프트웨어의 이벤트를 기록하는 것으로써, 소프트웨어의 동작상태를 파악하고 문제가 발생했을 때 이 동작 파악을 통해서 소프트웨어의 문제를 찾아내고 해결하기 위해 디자인 되 minkwon4.tistory.com Springboot는 기본 Java 로깅 프레임워크로 spring-boot-starter-web안에 spring-boot-starter-loggig의 logback이 포함되어 있지만 가장 최신에 나오고 성능이 좋은 log4j2를 Springboot 프로젝트에 설정을 해보았다. 다음과 같은 과정을 거쳐 설정을 진행했다. log4j2 Depende..

Java&Web 2020.12.29

[Logging] slf4j, log4j, logback, log4j2

로그(log)는 소프트웨어의 이벤트를 기록하는 것으로써, 소프트웨어의 동작상태를 파악하고 문제가 발생했을 때 이 동작 파악을 통해서 소프트웨어의 문제를 찾아내고 해결하기 위해 디자인 되었다. 즉, 소프트웨어의 디버깅이나 모니터링을 위하여 정보를 기록하는 곳에 사용되는데 기존의 Debugger나 println에 비해 로그는 다음과 같은 장점이 있다 상활별 Level을 지정하여 Level별 메세지를 선택가능 응용 프로그램의 실행에 대한 흐름과 에러 확인 가능 프레임워크를 이용하여 간단하고 쉬운 사용환경 조성 가능 모듈 별로 유연하게 메세지 출력 가능 자유로운 출력 위치 및 다양한 출력 형식 지원 Java에서는 이러한 로그에 대해 여러 프레임워크가 존재한다. 로깅 프레임워크에는 slf4j, log4j,l lo..

Java&Web 2020.12.29

[Apache] Apache와 Springboot 연동하기(mod_jk)

[WEB] Apache와 Tomcat 연동하기 [WEB] Apache와 Tomcat 연동하기 [Network] Web Server와 WAS [Network] Web Server와 WAS Web Server란? 개념 하드웨어적 의미로는 Web Server가 설치되어 있는 컴퓨터 소프트웨어적 의미로는 클라이언트의 요청을 받아 정적 컨텐츠(image, html,.. minkwon4.tistory.com Apache와 Springboot 연동(mod_jk) Web Server로써 Apache를 Springboot의 내장 Tomcat과 연동하는 작업을 앞서 정리한 글의 mod_jk 방식을 사용하여 다음과 같은 과정을 거쳐 진행해 보았다. 일단 Springboot에서 다음과 같은 설정 파일들을 작성해주었다. app..

Java&Web 2020.12.24

[Unix/Linux] Shell Script(쉘 스크립트)란

Shell(쉘)이란? Shell(쉘)은 운영체제상에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램이다. 즉 다시말해서, 운영체제의 커널과 사용자 사이를 이어주는 역할을 하며 사용자의 명령어를 해석하고 운영체제가 알아들을 수 있도록 도와주는 명령어 해석기이다. Linux에서 사용하는 Shell의 종류로는 다음과 같은 것들이 있다. bash : Bourne-Again Shell(프롬프트 : #, 경로 : /bin/bash). 가장 대표적으로 사용. sh : Bourne Shell(프롬프트 : $, 경로 : /bin/sh) csh : C Shell(프롬프트 : %, 경로 : /bin/csh) ksh : Kron Shell(프롬프트 : $, 경로 : /bin/ksh) tcsh : TENEX ..

Operating System 2020.12.23

[CI/CD] Jenkins란

[CI/CD] CI/CD란 [CI/CD] CI/CD란 CI/CD란? CI/CD란 지속적인 통합(Continuos Integration), 지속적인 서비스 제공(Continous Delivery), 지속적인 배포(Continous Deployment)의 약자이다. CI/CD는 새로운 코드 통합 문제를 해결하기 위한 솔루션.. minkwon4.tistory.com Jenkins란? Jenkins는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 CI/CD 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 도와준다. Jenkins의 장점 Build 자동화의 확립 : Ja..

[CI/CD] CI/CD란

CI/CD란? CI/CD란 지속적인 통합(Continuos Integration), 지속적인 서비스 제공(Continous Delivery), 지속적인 배포(Continous Deployment)의 약자이다. CI/CD는 새로운 코드 통합 문제를 해결하기 위한 솔루션으로써, 애플리케이션의 개발 단계를 자동화하여 애필리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. 즉, 다시 말해 짧은 주기로 개발중인 애플리케이션을 배포하고 그 과정을 자동화 하는 것이다. CI/CD의 가장 큰 특징은 애플리케이션의 통합 및 테스트 단계에서부터 애플리케이션의 제공 및 배포까지 전체에 걸친 지속적인 자동화와 지속적인 모니터링이다. 대표적인 CI/CD tool로는 Jenkins, Travis CI, Bamboo 등이 있..

[Test] 테스트 케이스(Test Case)란

테스트 케이스란? 테스트 케이스(Test Case)란 명세 기반 테스트의 설계 산출물로 설계된 입력값, 실행조건, 기대 결과로 구성되어 있는 테스트 항목의 명세서를 의미한다. 보통 테스트 케이스를 활용하는 이유는 크게 두가지이다. 테스트 누락 방지와 테스트 투명화이다. 테스트 케이스 종류 기능 테스트 요구하는 목적을 만족하는지를 검증하는 테스트 도메인 테스트 경계값 분석 등 관계성을 지닌 복수의 변수를 동시에 검증하는 테스트 사양기반 테스트 설계서 및 메뉴얼과 같은 문서 상에 기술된 내용과 소프트웨어가 똑같은 지능을 가진지 검증하는 테스트 부하 테스트 최대 설계 부하와 그 이상의 부하를 검증하는 테스트 회귀 테스트 프로그램이 변경 되었을 때의 이상을 검증하는 테스트 사용자 테스트 사용자에게 실제로 사용하..