CI/CD? 배포 자동화를 해보자
·
Backend Programming
왜 자동화를 적용하게 되었는가?프로젝트의 코드가 완성되면 java 빌드, docker 이미지화, ec2환경에서의 이미지 pull, docker-compose up 하는 과정이 되게 번거로웠습니다. 그래서 자동화를 해서 완성되었을 때 버튼 하나로 빌드부터 배포까지 한번에 완료됐으면 했습니다. 자동화 툴이 여러가지 있었는데 이전 회사에서 사용이라도 해봐서 친근해보이는 젠킨스를 선택했습니다. CI/CD가 무엇인가?CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미하며, 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 합니다. 지속적 통합(CI)은 코드 변경 사항을 공유 소스 코드 리포지토리에 ..
EC2를 활용한 HTTPS 및 도메인 설정
·
Backend Programming
EC2와 HTTPS를 활용한 배포 과정 정리처음에는 작업 중인 프로젝트에 HTTPS와 도메인을 적용하기 위해 로컬 환경에서 테스트를 진행했습니다. 집에서 공유기를 통해 외부 IP를 할당받아 DuckDNS 도메인을 사용했지만, 문제가 있었습니다. 이동해서 다른 곳에서 작업할 때마다 IP가 변경되었고, 카페와 같은 공용 Wi-Fi에서는 포트 포워딩을 직접 설정하는 것이 거의 불가했습니다. 그래서 AWS EC2를 활용해 HTTPS 환경을 구축하기로 결정했습니다. 이렇게 하면 외부 IP와 관련된 문제를 해결할 수 있고, 다른 사람들도 도메인을 통해 프로젝트에 접근할 수 있습니다. 이번 글에서는 EC2 환경으로 배포를 진행하면서 알게 된 점과 작업 흐름을 정리해보겠습니다.ec2aws 가입AWS 가입 과정에서 인증..
[JAVA] 프로그래머스 튜플
·
Algorithm/Programmers
import java.util.*;class Solution { public int[] solution(String s) { //String 묶음으로 갈무리 String[] lists = s.substring(2, s.length() - 2).split("},\\{"); //크기가 작은 순으로 정렬 Arrays.sort(lists, Comparator.comparingInt(String::length)); Set checkDuplication = new HashSet(); int[] answer = new int[lists.length]; int indexCount = ..
[JAVA] 프로그래머스 [1차] 캐시
·
Algorithm/Programmers
import java.util.LinkedHashMap;import java.util.Map;class Solution { public int solution(int cacheSize, String[] cities) { if (cacheSize == 0) { return cities.length * 5; // 캐시 크기가 0이면 모든 요청이 miss } int answer = 0; // LRU 캐시를 위한 LinkedHashMap 설정 Map cachedMap = new LinkedHashMap(cacheSize, 0.75f, true) { @Override protected b..
이메일 인증을 위한 Redis 설정과 문제 해결 과정
·
Backend Programming
이메일 인증을 위한 Redis 도입 배경회원가입 시 이메일 인증은 보안성과 신뢰성을 높이기 위한 중요한 과정입니다. 이를 구현하면서 "이메일 인증 정보는 오래 저장할 필요가 없으니, 영구 저장소가 아닌 일시적인 데이터를 저장할 수 있는 시스템을 선택하는 게 맞겠다"는 판단을 내렸습니다.이 과정에서 적합한 데이터베이스를 조사하던 중 Redis를 알게 되었고, 다음과 같은 이유로 선택하게 되었습니다.Key-Value 형태의 NoSQL 데이터베이스: 복잡한 관계형 데이터를 다룰 필요가 없었기 때문입니다.일시적인 데이터 저장: 이메일 인증번호와 같은 데이터는 짧은 시간 동안만 유지되므로, Redis의 TTL(Time-To-Live) 기능이 적합했습니다. Redis를 사용하며 겪은 시행착오와 해결 과정시행착오와 ..
[JAVA] 프로그래머스 괄호 회전하기
·
Algorithm/Programmers
import java.util.Stack;class Solution { public int solution(String s) { int answer = 0; int n = s.length(); if (n == 1) { return 0; // 길이가 1이면 올바른 괄호 문자열이 될 수 없음 } for (int i = 0; i stack = new Stack(); int n = s.length(); for (int i = 0; i  풀이1. 문자열의 첫번째 값이 맨뒤로 이동해야된다.2. 그리고 그 맨뒤로 이동한 스트링의 값을 확인해야된다.3. 그것을 이제 시작점과 i번째의 나눈 나..