본문 바로가기

분류 전체보기

(64)
gitHub & Jenkins CI/CD 적용 (1/4) 프로젝트 진행 전에 github과 Jenkins 연동을 통하여 CI/CD를 구축하려 한다.  Jenkins 란?Jenkins는 지속적인 통합과 배포를 도와주는 Java로 제작된 오픈 소스 툴이다. Java Runtime Environment에서 동작다양한 플러그인을 통하여 자동화 작업 처리를 지원한다.일련의 자동화 작업의 순서들을 파이프라인을 통해 CI/CD 진행할 수 있게 구축할 수 있다. Jenkins 대표 플러그인Credentials PluginsJenkins는 단지 서버로 배포에 필요한 각종 리소스에 접근하기 위해서는 여러 중요 정보를 저장할 필요가 있다.클라우드 리소스 혹은 베이메탈에 대한 ssh 접근 등을 의미하며, git access token, secret key, ssh 등의 정보를 저장..
Java 8, 11, 17 Java  8, 11, 17 버전 설명 및 추가 기능 java에서 가장 많이 사용되고 있는 버전은 `java 8`로 필자도 실무에서는 java 8을 사용하고 있습니다.2019년 9월 공개된 LTS버전 java 17이후로도 현 2024년 4월 기준으로 JAVA 21 또한 추가적으로 공개되었습니다. JAVA 버전 사용 조사작년 기준으로 자바 생태게에서는 8, 11, 17가 많이 사용되고 있으며 각 버전별 특징 및 추가 기능을 정리해보겠습니다.위 세 버전 LTS(Long Term Support)로 장기간에 걸쳐 지원하도록 고안된 소프트웨어 버전을 뜻합니다.  JAVA 8 에서 JAVA 17로해가 지날 수록 Java 8에서 java 17로 사용량이 변화되고 있는것으로 보이며 java 17의 사용량은 이전 LTS..
Docker Hub Image 배포 스크립트 Docker Hub에 있는 Image를 읽어 배포하는 스크립트를 만들어보았다. 필자는 AWS EC2를 사용하고 있었으나 메모리용량, 디스크 용량에 증가에 따른 가격 상승이 굉장히 높아서 다른 Iaas로 옮기는것을 선택하게되었다.Docker 허브 이미지 배포방식을 통하여 좀다 빠르게 다른 환경으로 이식할 수있어 굉장히 편리했다.   https://daliy-dev.tistory.com/51 GitHub를 이용한 CI (docker Hub)CI란? CI는 Contious Integration으로 지속적인 통합이라 할 수 있다. 개발팀이 정기적으로 코드 변경사항을 구현하고 테스트 한 후, 공유 버전 관리 레포지토리에 병합하는 방식을 말한다. 자동화 된daliy-dev.tistory.com이전 포스팅에서 등록했..
GitHub를 이용한 CI (docker Hub) CI란?CI는 Contious Integration으로 지속적인 통합이라 할 수 있다. 개발팀이 정기적으로 코드 변경사항을 구현하고 테스트 한 후, 공유 버전 관리 레포지토리에 병합하는 방식을 말한다. 자동화 된 빌드에 의해 이런 `체크인`이 인증되므로 코드와 관련된 모든 문제를 신속하게 파악하고 해결 할 수 있다. CI를 사용하면 개발자 팀 사이에 충돌 없이 동일한 앱을 동시에 작업 할 수있다.  사용 툴GithubDockerspring boot 차례spring boot 프로젝트 구조Github actions 스크립트 파일Dockerfile 파일Gitlab CI 확인  Spring Boot 프로젝트 구조 메이븐을 통한 멀티 모듈 구조로 프로젝트 구성을 만들었다. web-api: spring boot 메..
백준 댄스 파티(2831) 오늘은 투포인트 문제를 풀어보았다. https://www.acmicpc.net/problem/2831 2831번: 댄스 파티 남자 N명과 여자 N명이 상근이가 주최한 댄스 파티에 왔다. 상근이는 모든 사람의 키를 알고있다. 각 남자는 모두 여자와 춤을 출 수 있고, 여자는 남자와 춤을 출 수 있다. 모든 사람은 많아야 한 www.acmicpc.net 위에 조건을 따지고 보면 두가지 조건의 그룹이 생긴다. 큰 남자를 좋아하는 여자 & 작은 여자를 좋아하는 남자 큰 여자를 좋아하는 남자 & 작은 남자를 좋아하는 여자 이렇게 두그룹으로 구분한뒤 큰 사람, 작은사람 비교하는 알고리즘을 만들면 된다. import java.io.BufferedReader; import java.io.IOException; impo..
소프트웨어 배포 전략 배포 전략이란?서비스를 중지하지 않고 새로운 버전을 배포하기 위해 여러 전력들이 존재한다.과거에는 수개월 또는 수년에 한번씩 서비스를 릴리즈 하였지만, 최근에는 마이크로 서비스 아키텍쳐와 같은 작은 단위의 서비스를 좀 더 자주 배포하는 방식으로 변화하고있다. 배포 전략 종류롤링 배포(Rolling Update Deployment)블루/그린 배포(Blue/Green Deployment)카나리 배포(Canary Deployment) 1. 롤링 배포 (Rolling UpdateDeployment) 롤링 배포란 가동중인 여러대의 서버를 점진적으로 구버전에서 신버전으로 전환하며, 구버전 인스턴스를 제거하는 전략입니다. 장점서비스 중단 없이 배포가 가능합니다.많은 리소스가 필요하지 않으며 필요시에는 이전 버전으로 ..
백준 암호만들기(1759) bruteforcing 문제를 풀어보았다. https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 문제 풀이 문자의 정렬 순서는 a-z배열을 기준으로 인덱스를 비교하여 정렬을 보장했다. 자음 모음 확인은 마지막으로 만들어진 문자를 기준으로 확인했다. 출력시 정렬 하는방식은 우선순위 큐를 이용했다. 코드 package bruteforcing; import java.io.BufferedReader; import java.io.IOException; import..
백준 색칠하기(13265) 오늘 DFS 문제를 풀어보았다. https://www.acmicpc.net/problem/13265 13265번: 색칠하기 각 테스트 케이스에 대해서 possible 이나 impossible 을 출력한다. 2 가지 색상으로 색칠이 가능하면 possible. 불가능하면 impossible 이다. www.acmicpc.net 문제 풀이 각 노드를 서로 다른색으로 색칠을 해준다. 각 노드와 연결된 노드가 색이 다른지 확인 해준다. 두가지 기준으로 풀이를 해주면 된다. ※ 노드는 모두 연결되어 있지 않을 수도있다. 해당 부분을 생각하지 못하여 문제를 틀렸어서 시간을 소비했다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io..
Jasypt 암호화를 이용하여 정보 보호하기 jasypt jasypt는 형상관리, 애플리케이션 배포시에 DB계정 및 중요한 비밀 키 값들을 평문으로 저장하는것을 막기 위해 프로퍼티를 암호화 할 수 있게 제공해주는 라이브러리 입니다. 사용법 및 설명의존성(dependency) 추가 com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.4 implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4' @EnableEncryptableProperties 어노테이션을 통하여 SpringBoot 암호화할 빈을 생성해줄 class를 생성한다.Bean 이름을 지정해주 않게 되면 Default 빈 명칭은 jasyptStringEn..
백준 김바천국의 계단(28069) 오늘은 DP문제를 풀어보았다. https://www.acmicpc.net/problem/28069 28069번: 김밥천국의 계단 첫 번째 줄에 계단 개수에 해당하는 $N$, 계단을 오르는 횟수 $K$가 주어진다. $(1 \leq N, K \leq 1\,000\,000)$ www.acmicpc.net 해당 문제를 N * K 번 수행을 하게되면 메모리 초과 혹은 시간 초과가 발생된다. 해당 문제를 풀기 위해서 DP를 이용했다. 키 포인트 현재 계단이 밝을 수 있는 계단인가? 현재 계단은 몇번째 행위로 밝을 수 있는 계단 인가? 위 두가지 사항을 누적해가며 김밥 가게 위치에 최소 행동 값을 DP하면 된다. import java.io.BufferedReader; import java.io.IOException;..