본문 바로가기

전체 글153

리눅스 Ec2에 Redis6 설치 ※ 결과만 보고 싶으신 분은 앞 과정은 생략해주시고 맨 마지막에 있는 설치과정을 따라해주세요 설치 sudo yum update sudo yum install gcc make mkdir Redis cd Redis sudo wget http://download.redis.io/redis-stable.tar.gz sudo tar zxvf redis-stable.tar.gz cd redis-stable sudo make sudo cp src/redis-server src/redis-cli /usr/local/bin/ sudo mkdir /etc/redis sudo cp redis.conf /etc/redis cd /etc/redis sudo vim redis.conf sudo mkdir /var/lib/redi.. 2024. 1. 27.
[인가 설정 리팩토링] Security Config -> @PreAuthorize 문제점: Path가 추가 될 때마다 시프링 시큐리티에 추가해주어야 한다. 즉, 코드가 길어질 가능성이 있어 가독성이 떨어진다. 또한 컨트롤러에서 어느권한이 접근하는 메소드인지 알 수 없다. 방안: @PreAuthorize 어노테이션 도입 위에서 말한 문제점들을 모두 해결해줄 수 있다! 리팩토링 config에 @EnableGlobaslMethodSecurity 어노에티션을 안 달아줬다. 적용이 되는 줄 착각했던 것이다 @EnableGlobaslMethodSecurity 를 달아주고 스프링 공식문서를 보니 마이그레이션 됐다 @EnableMethodSecurity로 변경한다 트러블 슈팅 test해보니 cusotmeAccessDeniedhandler가 호출이 되어야 하는데 호출이 되고 있지 않는 것을 보고 있다.. 2024. 1. 25.
백엔드 개발자가 읽으면 좋은 글 모임 좋은 코드 설계를 위한 답없는 고민들 - Yun Blog | 기술 블로그 좋은 코드 설계를 위한 답없는 고민들 - Yun Blog | 기술 블로그 cheese10yun.github.io Spring Guide - Service 가이드 - Yun Blog | 기술 블로그 Spring Guide - Service 가이드 - Yun Blog | 기술 블로그 cheese10yun.github.io 2024. 1. 24.
인증 이메일 보내기 인증 이메일을 보낼 이메일(Google, Naver ...)마다 다르겠지만 추가적인 이메일 설정이 필요합니다. 저는 Gmail을 사용했습니다. Gmail 설정은 이 링크를 참고하세요! Gradle implementation'org.springframework.boot:spring-boot-starter-mail' Mailconfig @Configuration public class MailConfig { @Value("${email.id}") private String fromId; @Value("${email.password}") private String password; @Bean public JavaMailSender getJavaMailSender() { JavaMailSenderImpl mai.. 2024. 1. 24.
JWT Token Service 개발 중 고민, Tip 🖤 Key 값 생성 사이트 https://www.devglan.com/online-tools/jasypt-online-encryption-decryption 사용자 경험을 고려하여 엑세스 토큰 기간을 설정하는 것이 좋다. 일단 1시간으로 설정 환경변수 설정하는 법 출처: https://mchch.tistory.com/282 🖤 jwt gradle 설정(spring3) implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5' runtimeOnly group: 'io.jsonwebtoken', n.. 2024. 1. 24.
Gighub Action , Docker Compose, Nginx, code deploy 무중단 배포 무중단 배포 1. rolling update 배포 새로 배포되어야 하는 버전을 하나씩 순차적으로 적용시키면서 배포하는 방식입니다. 한 번에 모두 배포되는 게 아니기 때문에 배포가 되는 과정에서 옛날 버전과 새로운 버전이 공존합니다. 그렇기 때문에 잘못하면 배포하는 과정 중에 호환성 문제가 생길 수 있습니다 2. Blue,Green 배포 예시를 들자면 이전의 8080포트를 쓰고 있는 컨테이너가 있습니다. 새로운 컨테이너를 새로운 포트(8081)로 올립니다. 다 올려졌다면 nginx는 새로운 컨테이너 포트로 연결하고 이전 컨테이너는 내립니다. 3. 카나리 배포 적은 사용자에게 먼저 배포 후 A/B 테스트. 현재 단계에서는 고려하지 않겠습니다. rolling update는 인스턴스를 두 대 이상 사용하여 비용.. 2024. 1. 11.
Gighub Actions,docker 배포 GitHub Actions GitHub Actions는 일반적으로 CI(Continuous Integration, 지속 통합) 또는 CD(Continuous Deployment, 지속 배포)와 같은 자동화를 위해서 사용됩니다. 운영환경에 소스코드를 머지하기 위해 반복적으로 처리되야 할 일들들을 처리해줍니다. 즉, CI/CD를 위한 파이프라인입니다. CD ( Code Deploy) Source Code를 운영환경에 자동 배포하는 역할을 수행하는 행위(지속적 자동 배포) 전체적인 플로우 1. Github Action에서 소스코드를 빌드한다. 2. Github Action에서 빌드한 소스코드를 이미지로 빌드한다. 3. Github Action에서 빌드한 이미지를 Docker 레퍼지토리에 넣는다. 4. Gith.. 2024. 1. 11.
[쿼리문 개선] 댓글/대댓글 조회 dto로 받기 기존코드 PostCommentGetService @Service @RequiredArgsConstructor public class PostCommentGetService { private final PostCommentRepositoryCustom postCommentRepositoryCustom; @Transactional public List getPostComment(long postId) { List postCommentList = postCommentRepositoryCustom.findByPostId(postId); List responseList = new ArrayList(); Map responseHashMap = new HashMap(); postCommentList.forEach(p.. 2023. 11. 27.
일급컬렉션을 쓰는 이유 일급컬렉션 Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 합니다. 1. 비지니스에 종속적인 자료구조 6개의 숫자로만 이루어져야만 하고 6개의 숫자는 서로 중복되지 않아야만 하는 이런 자료구조가 없을까요? 없으니 저희가 직접 만들면 됩니다. 타인이 읽었을 때 자료형을 만들고 계산하는 로직을 본다면 어떤 비지니스 요구사항에 의해서 만든지 직관적으로 이해하기 힘듭니다. 일급컬렉션을 이용한다면 비지니스 요구사항중 관련되 것들을 한 곳에서 관리할 수 있어 타인이 이해하기 편합니다. 2. 불변 불변이 중요한 이유는? ⇒ 규모가 커질 수록 객체가 절대 값이 바뀔일이 없다는 게 보장되면 코드를 수정하는데 사이드 이펙트가 최소화 되기 때문입니다. @Test public.. 2023. 11. 2.