🗃️Redis 명령어
·
TIL
Redis 명령어에 대해서 알아보자!Redis는 엄청 큰 java의 맵이라고 생각하면 Redis 사용이 좀 더 쉬울 수 있음! String 자료형-- String-- ~~~SET user:email alex@example.com #문자열 자료형을 설정GET user:email #문자열 데이터를 가져오기-- 정수가 문자열로 저장된 경우-- INCR, DECR : ++, ---- INCR, DECR : 조회할 때 마다 사용할 수 있음 (조회수)SET user:count 1GET user:countINCR user:count #정수처럼 쓸 수 있는 명령어/ 데이터를 1 증가시킴 (increment)GET user:count #v..
🗃️Redis 소개 및 설치 방법
·
TIL
Redis!!!!말로만 듣던 Redis 강의를 듣게 되었다.강의 내용을 정리하려는데, 오늘은 소개와 설치 방법만 정리해보려고 함!Redis 소개인 메모리 데이터 베이스원래는 오픈 소스였으나, 현재는 상용 라이센스가 적용하지만 일반 개발자에겐 큰 문제는 없음(일반적인 제약X)클라우드 서비스 제공자에게는 라이센스 변경이 있을 수 있음관계형 데이터 베이스(MySQL, Oracle…)테이블 형태로 데이터 저장서비스 종료 후 다시 시작해도 데이터를 그대로 복원할 수 있음영속성, 일관성 측면에 중점보통은 파일 시스템(HDD,SDD)에 데이터 저장파일 시스템에 저장(변경)하는 것은 상대적으로 느림H2는일반적이 관계형 데이터베이스와 다름In-Memory 옵션을 제공하여 메모리 상에 관계형 데이터베이스를 운영할 수 있음..
🎮GitHub CI/CD
·
TIL
오늘은 GitLab에 이어서 GitHub로CI/CD를 구축하는 방법을 남기고자 한다!1. IntelliJ에서 GitHub과 프로젝트 연동설정 > 버전관리 > GitHubGitHub 계정 로그인 확인Git > GitHub > [GitHub에 프로젝트 공유] 클릭저장소 이름 작성 후 [공유] 버튼 클릭ex) project-01오른쪽 하단에 ‘GitHub에서 프로젝트를 성공적으로 공유했습니다.’ 메세지가 뜸2. GitHub으로 이동 GitHub · Build and ship software on a single, collaborative platformJoin the world's most widely adopted, AI-powered developer platform where millions of dev..
🎮GitLab CI/CD
·
TIL
오늘은 CI/CD를 GitLab을 통해서구축하는 방법을 남기고자 한다!1. GitLab 가입 The most-comprehensive AI-powered DevSecOps platformFrom planning to production, bring teams together in one application. Ship secure code more efficiently to deliver value faster.about.gitlab.comGitlab 가입 후Create group 생성Create new projectCreate blank project 생성start.spring.io 에서 Spring 프로젝트 만들기작업 폴더에 만든 프로젝트 압축 풀기2. IntelliJ 프로젝트 연동IntelliJ에서..
🐋Docker 추가 내용, 볼륨(Volume) 마운트
·
TIL
오늘은 Docker 강의를 들으면서정리한 내용을 적어보려고 함! 도커를 사용하지 않았을 때의 배포 방식배포 방식Spring 앱을 Linux 서버에 올려서 실행사용자가 엔드포인트를 통해 접속동일한 버전의 Java, Gradle 등을 수동으로 설치해야 했음서버 관리 이슈동일 서버에서 여러 컨테이너를 설치하려면 Java 버전 충돌이 발생할 수 있어 복잡함DB 구축도 어려움DB 버전이 다르거나 설치 시간이 많이 걸림도커 도입 후 변화버전 관리 불필요도커를 사용하면 버전을 별도로 관리할 필요 없이, 컨테이너 내에서 필요한 환경을 자동으로 설정 가능.DB 설치 간소화도커 명령어 한두 줄로 DB 설치가 가능해져 작업이 매우 간편해짐편리성 증가전체 시스템 환경을 빠르고 효율적으로 구축할 수 있게 됨도커에서의 실수 감소..
🚨Docker 문제 발생
·
TIL
오늘 Docker강의를 들으며 실습을 따라하는데바인딩 폴더명이 이상하게 만들어지고 폴더 안에는 텅 비는 상황 발생이리저리 알아보다가 🐲용쌤 덕분에..해결함⭐이 내용을 오늘 남겨보려고 한다문제 상황강의에서 제공된 container 생성 코드로 진행함(Linux명령어 형식)docker run -d --name postgres-sample \ -p 5433:5432 \ -e POSTGRES_USER=admin1 \ -e POSTGRES_PASSWORD=admin2 \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v ${로컬_바인딩_폴더}:/var/lib/postgresql/data:z \ postgres 1. 폴더명이 '폴더명;드라이브'로 저장됨2. 폴더 안에 아무것도 ..
🗄️다양한 DB들 뭐가 뭔지 알아보자
·
TIL
이번에 프로젝트를 하면서 PostgreSQL를 사용해야했다.근데 왜 PostgreSQL일까 이 아이는 MySQL과 뭐가 다를까 궁금해짐!그래서 오늘은 DB들에 대해서 정리를 해보고자 한다. 📌 데이터베이스 선택은 애플리케이션의 성능, 기능 및 확장성에 큰 영향을 미칠 수 있음데이터 관리의 효율성을 높이고 유지 관리 비용을 줄이며 최종 사용자에게 더 나은 서비스 제공하는데 기여데이터 베이스 선택 시 고려할 사항지원되는 데이터 유형인덱싱데이터 검색 속도동시성 제어잠금 : 여러 사용자가 동일한 데이터를 동시에 수정하지 못하도록 제한낙관적 동시성 제어 : 동시 데이터 액세스를 허용하지만 변경 사항을 커밋하기 전에 충돌을 확인확장성기본 복제본 구성ACID 규정 준수SQL vs NoSQLSQLNoSQL관계형비관계..
🤝Entity 연관관계
·
TIL
JPA를 사용하면서 각 Entity간 연관관계를 매핑하는데필요한 개념을 정리해보자!왜 연관관계를 가져야 하는가?객체지향적인 설계를 할 때, 현실 세계의 관계를 코드로 표현하기 위해 엔티티 간 연관관계를 정의한다. JPA에서는 연관관계를 맺어줌으로써 객체 그래프 탐색이 가능해지고, 연관된 데이터들을 효율적으로 조회할 수 있다. 또한, 적절한 연관관계 매핑을 통해 유지보수성을 높이고, 중복 데이터를 줄일 수 있다.개발자는 현실 세계의 개념을 데이터베이스에 담아야 하는데, 이를 하나의 테이블로 관리할 수 없기 때문에 정규화를 통해 데이터를 나누고 분리하는 과정에서 연관 관계가 생긴다.1:1 관계 (OneToOne)하나의 Entity가 다른 Entity와 단 하나의 관계를 가지는 구조예시User Entity@E..
🗓️Auditing 적용 안되는 문제 해결
·
TIL
BaseEnity에 @EntityListeners(AuditingEntityListener.class)도 붙였고@EnableJpaAuditing도 application에 붙였는데 왜 필드에 값이 안 들어올까?이유at만 있었다면 Main application에 붙인 @EnableJpaAuditing 적용이 되는데 by가 있어서 적용이 안 된다고 한다..🙃by 애들은 SecurityContext에 저장된 인증 정보를 바탕으로 설정되기 때문에, AuditorAware Bean을 명시적으로 등록해야 한다고..그리고 JPA Auditing에서 'at'(날짜/시간) 필드와 'by'(사용자) 필드의 동작 방식이 다르다고 한다.'at' 필드 (@CreatedDate, @LastModifiedDate)메인 애플리케이션..
🎫@AuthenticationPrincipal 과 @RequestHeader
·
TIL
@RequestHeader를 사용하라구요? 프로젝트 중 팀원분께서 튜터님에게 면담을 다녀오셨는데,유저 정보를 가져올 때 @AuthenticationPrincipal말고 @RequestHeader를 사용하라고 얘기를 듣고 오셔서 공유를 해주셨다.근데 왜 일까???🙃 궁금해졌다. 그래서 찾아 본 걸 적어보려고 함!@AuthenticationPrincipal@AuthenticationPrincipal은 Spring Security에서 제공하는 어노테이션주로 Spring Security의 인증 정보(로그인된 사용자 정보)를 컨트롤러 메소드에 주입할 때 사용@RestControllerpublic class UserController { @GetMapping("/user/profile") public ..