본문 바로가기

분류 전체보기101

Unit service failed to load properly, please adjust/correct and reload service manager: File exists 😂 문제 발생 😂 Ubuntu 22 LTS 환경 VM 서버에 설치했던 Redis 버전을 올리기 위해 기존 Redis 서비스를 삭제한 후 재설치하고 다시 실행시켰는데, 아래 이미지와 같은 에러가 발생하며 서비스가 실행되지 않았다. 메시지대로 시스템 로그를 확인했더니 다음과 같이 메시지가 출력되었다. 해당 문제는 unmask 명령어를 통해 해결 할 수 있었다. $ sudo systemctl unmask redis-server.service https://stackoverflow.com/questions/40317106/failed-to-start-redis-service-unit-redis-server-service-is-masked Failed to start redis.service: Unit red.. 2024. 6. 17.
Redis 기본 사용자 접근을 막고 아이디 비밀번호 적용하기 (ACL) 운영 중인 서비스에서 관리하는 레디스에 외부에서 접근이 필요하도록 설정해야 하는 경우가 있다. 단순하게 레디스 접근포트를 열어서 자유롭게 접근을 허용한다면 운영 중인 서비스의 데이터가 외부로 노출되거나 조작될 가능성이 존재한다. 따라서, 외부에서 레디스 직접 접근이 필요한 경우에는 기본 사용자 접근을 막고, 안전하게 데이터에 접근할 수 있는 환경을 구성해야 한다. 해당 포스트에서는 Redis 6.0 버전부터 제공하는 ACL(Access Control List) 기능을 활용해서 사용자 계정을 생성하고 관리하는 방법에 대해서 설명한다.1. 외부 접근 허용하기레디스 설정파일 /etc/redis/redis.conf에 접근해서 설정 파일을 텍스트 편집기로 연다. sudo vi /etc/redis/redis.con.. 2024. 6. 15.
Ubuntu 환경에서 Spring Boot Application을 service로 등록하기 일반적으로 리눅스 백그라운드 환경에서 스프링 부트 애플리케이션을 간단하고 빠르게 실행할 때는 nohup java -jar 명령어를 이용한다. 하지만 nohup 명령어로 실행하는 것은 로그 관리, 서비스 자동 재시작, 자원 관리 등 애플리케이션 운영에 필요한 여러 필요 사항을 쉽게 구현하기 어려운 문제를 가지고 있다. 스프링 부트 애플리케이션을 service로 등록해서 활용하는 것이 더욱 안정적이고, 한 번 구축해 놓으면 나중에 개발 단계나 운영 단계에서 훨씬 편리하기 때문에 유용하다. 아래는 우분투 환경에서 shiba-server-0.0.1-SNAPSHOT.jar 스프링 부트 애플리케이션을 'shiba' 라는 서비스로 등록하기 위한 과정을 단계별로 설명한다.1. JAR 파일 준비먼저, 실행할 JAR 파일.. 2024. 6. 8.
인텔리제이를 활용해 특정 merge 시점으로 Git 브랜치 롤백하는 방법 해당 포스트는 브랜치를 특정 머지 시점으로 돌리고, Github 브랜치에 적용시키는 방법에 대해 설명한다.1. Git 툴 윈도우 열기먼저, 인텔리제이에서 Git 툴 윈도우를 열어야 한다. 화면 하단의 상태 표시줄에서 Git 아이콘을 클릭하거나, View > Tool Windows > Git을 선택한다. 2. 롤백할 커밋 선택롤백하고자 하는 커밋을 찾아서 선택한다. 선택한 커밋에서 마우스 오른쪽 버튼을 클릭하고 Reset Current Branch to Here... 옵션을 선택한다. 3. Reset 모드 선택Reset 대화 상자가 나타나면, 다음과 같은 옵션이 있다. Soft : 커밋만 되돌리고 변경 사항은 워킹 디렉토리에 남긴다.Mixed : 커밋과 인덱스를 되돌리고 변경 사항은 워킹 디렉터리에 남긴다.. 2024. 5. 25.
GitHub Actions을 활용하여 클라우드 VM 서버에 스프링 부트 애플리케이션 jar 파일 배포하기 🙄 GitHub Actions?GitHub Actions는 GitHub에서 제공하는 CI/CD(Continuous Integration/Continuous Deployment) 플랫폼이다. 이를 통해 개발자는 코드를 빌드, 테스트, 배포하는 자동화된 워크플로우를 설정할 수 있다. GitHub Actions는 다양한 이벤트(예: 코드 푸시, 풀 리퀘스트 생성 등)에 반응하여 작업을 수행할 수 있다. 사이드 프로젝트를 제작하는데 젠킨스(Jenkins)까지는 부담스럽고, 가볍고 쉬운 배포 방식을 선택하고 고민한다면 GitHub Actions는 괜찮은 대안이 될 수 있다고 생각한다.1. 준비해당 포스트는 GitHub Actions를 활용해서 클라우드 VM 서버에 스프링 부트 애플리케이션 jar 파일을 배포하는.. 2024. 5. 25.
[Querydsl] @OneToMany에서 조건 절과 Fetch Join을 함께 사용할 때 서브쿼리 사용하기 배경프로젝트에서 동적 쿼리가 필요한 요구사항을 처리하기 위해 Querydsl를 사용하게 되었다. 쿼리 호출을 최소화하기 위해 1:N 연관관계로 되어있는 데이터를 페치 조인(fetchJoin)으로 가져오려고 했으나, 생각대로 되지 않았다. 필요한건 연관된 목록 전체의 정보인데, 조건에 맞는 데이터 한 건만 가지고 오게 되는 것이었다. 아래는 동일한 상황을 간단하게 재연한 것이다.Shiba@Entity@Table(name = "tb_shiba_holic")@Getterpublic final class Shiba { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seq") private Long seq; .. 2024. 5. 12.
Redis Sorted Set 타입 특징 및 자주 쓰는 명령어 알아보기 Sorted Set Sorted Set은 유니크한 멤버들을 가지는 컬렉션으로, 각 멤버는 부동 소수점 숫자인 스코어(score)와 연결되어 있다. 이 스코어를 기반으로 멤버들이 자동으로 정렬된다. Sorted Set은 리더보드, 우선순위 큐 등 다양한 곳에 활용될 수 있다. Sorted Set은 다음과 같은 특징을 갖는다. - 고유한 값 저장 각 멤버는 Sorted Set 내에서 유일한 값을 갖는다. - 자동 정렬 멤버들은 스코어에 따라 자동으로 정렬된다. 스코어가 낮은 멤버부터 높은 멤버 순으로 정렬된다. 같은 스코어를 가진 멤버는 데이터의 사전 순으로 정렬돼 저장된다. - 빠른 접근 시간 멤버 추가, 삭제, 스코어 업데이트, 랭크 조회 등의 작업은 O(log(N)) 시간에 처리된다. (N은 Sorte.. 2024. 4. 14.
Redis Set 타입 특징 및 자주 쓰는 명령어 알아보기 SET Redis의 Set은 고유한 값들을 저장하는 데 사용되는 데이터 구조로, 중복된 값을 허용하지 않는다. 이 데이터 타입은 다양한 용도로 활용되며, 여러 유용한 기능을 제공한다. Set은 다음과 같은 특징을 갖는다. 고유한 값 저장 Set은 중복된 값을 허용하지 않으며, 각 값은 오직 한 번만 저장된다. 이는 집합 형태의 데이터를 효과적으로 표현하고 관리할 수 있도록 한다. 집합 연산 지원 Redis의 Set 타입은 여러 집합 연산을 지원한다. 교집합, 합집합, 차집합 등의 연산을 통해 집합 간의 관계를 쉽게 파악하고 다룰 수 있다. 순서 없음 Set은 순서가 없는 데이터 구조이다. 따라서 값을 저장한 순서를 보장하지 않으며, 순서에 의한 접근이 불가능하다. 명령어 (Command) SADD 설명:.. 2024. 4. 7.