전체 글

https://github.com/Layton0-0
DevOps/Docker

[Jenkins] Error: Unable to access jarfile step 'Execute shell' marked build as failure 해결 완료

결론부터.chmod +x mvnw ./mvnw -DskipTests packagejava -jar java -jar 하기 전에 mvnw에게 JAR 파일을 생성하게 해야 한다. 제목에서의 에러가 발생하는 이유는 jar파일에 접근할 수 없기 때문이다.보통 순서가 안 맞아 떨어지는 것 같다. chmod +x mvnw: Maven Wrapper(mvnw)에 실행 권한을 부여한다../mvnw -DskipTests package: mvnw를 사용해 Maven 빌드를 실행한다. ./mvnw : 현재 디렉토리의 mvnw를 실행한다. Maven 프로젝트를 관리하기 위한 스크립트이다. -DskipTests : Maven 빌드할 때 테스트를 건너뛰게 한다. 테스트 코드가 없을 때 빌드를 단축시키기에 좋다.package : ..

Language/Java

OCP 원칙이란?

Open-Closed PrincipleOpen for extension확장에는 열려있되,Closed for modification수정엔 닫혀있어야 한다.  이게 무슨 의미냐.새로운 기능 추가나 변경사항은 자유롭게 할 수 있고,기존의 코드는 건들지 않아도 되는 구조를 말한다. 기존 개발되어 있는 부분에 추가적인 기능을 넣는 나의 업무에 필수적인 원칙이다.강의의 예시 구조 이미지를 발췌해보겠다. 이러한 경우 Driver 클래스의 코드는 수정할 필요가 없다.새로 Car를 추가해야 하거나 Car에 기능을 추가해야할 때도 Driver 클래스의 코드는 수정될 필요가 없다.=> Closed for modification 그저 새로운 Car를 implement하는 클래스를 만들어 실행하면 된다.=> Open for e..

DevOps/Docker

[Docker] Windows Hypervisor is not present 해결 완료 (feat. LENOVO)

문제 상황 실습을 위해 docker desktop을 로컬에 깔아서 실행을 하니까 저런 문구가 떴다. 구글링 한 결과와 나의 해결에 대해 정리해본다. 해결 방법 저 문제를 해결하기 위해선 2가지 조건이 충족이 되어야 한다. 1. 'Windows 기능 켜기/끄기' 에서 Hyper-V를 사용으로 저장해준다. 2. 컴퓨터 자체의 BIOS 설정에서 가상화 사용 설정을 해준다. 먼저 1번부터 가보자. 1. 'Windows 기능 켜기/끄기' 에서 Hyper-V를 사용으로 저장해준다. 검색해주고 이렇게 3가지가 잘 체크되어 있는지 확인하자. 안되어있다면 체크 후 저장. 2번 조건을 만족하기 전에는 Hyper-V에 V표시가 아니라 ㅁ표시까지만 될 것이다. 2. 컴퓨터 자체의 BIOS 설정에서 가상화 사용 설정을 해준다...

DevOps/Linux

[DevOps Roadmap] Oracle Cloud 인스턴스의 루트 볼륨 증설 (물리, 논리)

내 멋대로 데브옵스 로드맵 1탄 기록이다. 그냥 내가 공부하는 족족 기록해볼 예정이다. 참고로 나는 AWS를 쓰지 않는다. (못한다) 가난하다. 프리티어 인스턴스 계속 살려두자니 너무 불안하다. Oracle Cloud는 평생 무료다. 모두 Oracle Cloud를 사용하자. (대머리 조심) 최근 회사에서 리눅스를 쓸 일이 많았다. 서버 쪽도 관리를 해서 그래야 한다. 리눅스 햇병아리는 실전에서 실수해 데이터를 다 날려먹지 않기 위해 별도로 공부를 하기로 한다. 오라클 클라우드의 인스턴스는 알아서 만들었다는 가정 하에 작성하겠다. (내 공부 기록용이기 때문. 어쩌라고.) 1. 문제 상황 일단 내가 느꼈던 문제 상황이다. 아니 난 분명히 200GB 짜리 부트 볼륨을 인스턴스에 할당을 했는데 루트 디렉토리가 ..

Spring/이론

[AOP] @Aspect 프록시, 포인트컷, 어드바이스

스프링 어플리케이션에 프록시를 적용하려면 어드바이저를 스프링 빈으로 등록하면 된다. 이 전 글들에서 계속 언급돼 왔다시피 어드바이저 = 포인트컷 + 어드바이스 이다. 포인트컷: 적용 조건 어드바이스: 추가할 부가 기능 이 어드바이저를 등록하려면 긴 코드를 작성해줘야 했다. 하지만 우리의 스프링 부트는 이런 길고 반복되는 코드를 그냥 보고있지 않는다. @Aspect 어노테이션은 이 반복되는 코드(어드바이저 등록)를 자동화해준다. 1. @Aspect 사용법 사용 방법은 너무나도 간단하다. @Slf4j @Aspect public class LogTraceAspect { private final LogTrace logTrace; public LogTraceAspect(LogTrace logTrace) { thi..

DevOps/Trouble Shooting

[DevOps] Docker 루트 디렉토리 변경(초간단)

1. 작업 계기회사에서 한 시스템 운영 인수인계를 받던 중 자동 배치를 돌고있던 젠킨스에 오류가 있다는 사실을 알게 되었다.원인을 찾아보니 리눅스에 도커가 올라가있는 디렉토리가 log full 차서 일어난 현상이었다. 그런데 여기서 근본적인 문제점/의문점 2가지가 있다.첫번째, 젠킨스 설정에서 오래된 빌드 삭제가 설정이 안되어 있었다.먼저 이 부분을 설정해주었다. 두번째가 치명적이다.도커의 루트 디렉토리가 리눅스의 루트 폴더에 마운트가 되어있던 것이다.내가 이해한 바로는 해당 폴더는 윈도우의 C드라이브 같은 것이다.OS에 관련된 시스템 관련 데이터를 저장하는 영역으로 증량이 안된다.다른 리눅스 디렉토리는 각각이 용량을 할당받고 증량해 확장할 수 있다고 한다. 따라서 공간 분리에 대한 필요성을 느껴 도커의..

Spring/이론

[스프링 고급] 빈 후처리기

빈 후처리기는 스프링 컨테이너에 빈이 등록되기 전 로직을 처리할 수 있게 해주는 기능이다. 빈을 직접 등록해서 하면 되는데 왜 굳이 또 중간에 뭘 넣는가 의문이 들 수 있다. 그냥 Configuration 파일 만들어서 직접 주입하면 되는거 아닌가 생각이 들었다. 하지만 코드를 작성할 때 빈 객체를 등록할 때 보통은 @Bean 보다는 @Component를 더 선호할 것이다. 빈 후처리기는 @Component로 바로 빈으로 등록되기 전 가로채서 로직을 처리할 수 있게 마지막 기회를 준다. 간편하게 @Component로 빈이 자동 등록되는데 굳이 가로채야 하는 이유에는 어떤 것이 있을까? 지금까지 공부한 프록시가 되겠다. 프록시 내에 여러 부가 기능들을 넣어두고 권한 설정도 해놨는데 (추가하고 싶은데) 냅다..

Spring/이론

[스프링 기초] Bean, 의존성 주입 DI에 대한 나만의 고찰

그동안 김영한님의 스프링 고급편까지 달려오면서 점점 기초적인 Bean에 대한 정의가 흔들리기 시작했다. 그래서 결국 Bean이란 무엇인가? 스프링을 오래 사용하면서 이 단어에 익숙해졌지만 혼자 명확히 제대로 짚어보기는 너무 미뤘던 것 같다. 이 게시글에서는 Bean에 대한 정의 및 의존성 주입에 대해 다시 한번 짚어보고자 한다. Spring이라는 프레임워크에서 빈은 스프링이 관리하는 객체라고 한다. 별로 와닿지 않는다. 코드가 객체를 어떻게 관리하지? 그럼 자바 인스턴스와 빈은 같은건가? 뭐가 다른거지? 둘은 다르지 않다. 빈은 자바 인스턴스의 종류 중에 하나일 뿐이다. 스프링 빈 등록에 대한 대략적인 그림 흐름은 이렇다. 그렇다면 그냥 객체와 인스턴스 개념 외에 빈이라는 개념이 필요한 이유는 뭘까? 이..

레이튼
개발 공부 스케치북