본문 바로가기

spring

(53)
Jlaner 개발기록 10 CI/CD 무중단 배포 - 완 이번 포스팅에서는 지난 포스팅에 이어 CI를 수정하고 CD를 구성하고 무중단 배포가 되는지 확인까지 해보도록 하겠다.우선 현재 사용하고 있는 CI를 확인하자.name: deployon: push: branches: - 'main'jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Set up JDK 21 uses: actions/setup-java@v3 with: java-version: '21' distribution: 'temurin' - name: Grant e..
Jlaner 개발기록 9 AWS SWAP 이번 포스팅은 저번 포스팅에서 mysql이 메모리 문제로 OOM 됐기 때문에 해결법을 고민하다 이왕 힘들게 배포한 거 SWAP 사용해보자 싶었다. Swap(스왑)스왑이란 컴퓨터에서 주메모리가 부족할 때 사용할 수 있는 보조 저장 공간으로 이전에 확인한 oom 같은 메모리 부족에 데이터를 HDD나 SSD 같은 보조 저장 장치에 저장해 해결할 수 있는 것을 스왑 공간이라 부른다.아래에 aws 웹에서 하는 법을 알려준다.https://repost.aws/knowledge-center/ec2-memory-swap-file Use swap file to allocate memory as swap space in Amazon EC2 instanceI want to allocate memory to work as a..
Jlaner 개발기록 8 배포 AWS (DOCKER) 이번 포스팅은 저번에 이어서 배포를 진행하도록 하겠다.이번 포스팅은 넘어갈까 싶었다. 글을 쓰던 도중 중간까지 글을 작성했는데 글이 날아갔다... 자동 임시저장이 있지만 페이지가 나가지고 새로고침까지 돼서 글들이 사라졌다.... 다시 작성할 생각에 아찔한데 다시 천천히 작성해 보도록 하겠다. 우선 무중단 배포 전략에 대해서이다. 이번 포스팅에서는 저번에 하다가 하지 못한 도커 배포만 진행해보고 다음 포스팅에 무중단 배포를 하는 것을 포스팅할 생각인데 지금 무중단 배포 전략을 설명하는 이유는 배포하면서 생각해야 할 부분이 있기 때문이다.무중단 배포 전략으로는 rolling, canary, blue-green 전략 3가지가 있다. 필자가 선택한 전략은 블루 그린이다.이유로는 rolling은 배포시 각 연결된..
Jlaner 개발기록 7 배포 Elastic Beanstalk 이번 포스팅에서는 배포에 앞서 엘라스틱 빈스토크 구성을 먼저 해보도록 하겠다.엘라스틱 빈스토크 구성은 처음이라 하다 잘 안될 것 같으면 EC2와 RDS으로 구성하도록 하겠다. 구성은 구성한 이미지를 토대로 설명하도록 하고 특이점이 있다면 설명하도록 하겠다. 역할이 필요하기 때문에 IAM에서 역할을 생성해 주도록 하자. 다음은 권한 정책을 추가해야하는데 다음 3가지를 추가해 주자.AWSElasticBeanstalkWebTierAWSElasticBeanstalkWorkerTierAWSElasticBeanstalkMulticontainerDocker 다음은 역할 이름을 추가하고 추가한 권한 정책이 잘 선택되었는지 확인해야 한다. IAM을 생성했다면 다음으로 ElasticBeanstalk를 구성해 보자.  필자..
Jlaner 개발기록 6 오류 처리 이번 포스팅은 오류 처리한 부분에 대해서 다루고 넘어가도록 하겠다.전체적인 로직 점검과 오류 처리에 대한 부분을 명확하게 처리하도록 구성했다. 오류 처리를 한 부분과 어떻게 처리를 했는지 확인해 보자.가장 먼저 보안 설정인 securityconfig를 확인해 보았다.package com.jlaner.project.config;import com.jlaner.project.config.jwt.TokenAuthenticationFilter;import com.jlaner.project.config.jwt.TokenProvider;import com.jlaner.project.config.outh2.*;import com.jlaner.project.repository.MemberRepository;import..
Jlaner 개발기록 5 기능 구성 (2) 이번 포스팅은 저번 포스팅에 이어 기능 구성을 마무리하려고 한다.저번 포스팅에서는 post를 저장하는 것을 포스팅했고 이번에는 나머지 기능을 구성해 보도록 하겠다.데이터를 저장해야하는 부분이 post 말고도 scheduleData도 저장해야 하고 다음은 저장된 값을 확인해야 한다.scheduleData를 저장하는 부분부터 진행해 보자. 기능의 흐름은 이전 post와 같을 것이다. mvc패턴부터 확인해 보자.package com.jlaner.project.domain;import com.jlaner.project.dto.ScheduleDataDto;import jakarta.persistence.*;import lombok.AllArgsConstructor;import lombok.Getter;import..
Jlaner 개발기록 4 기능 구성 이번 포스팅에서는 저번 포스팅 마지막에 보았던 api를 사용해 인증을 하고 인증을 통해 기능을 수행한 것을 확인할 수 있었고 api를 구성해 기능을 채워보도록 하겠다. 저번 로그인 구성과 같은 흐름으로 진행될 것 같다.구성하며 잘 되지 않는 부분 틀린 부분이 있겠지만 어떤 부분이 잘못되었고 어떤 생각으로 구성했고 어떻게 해결하는지에 대해서 기록하고 차차 나아가기 위함으로 봐주었음 한다. 구성해야 할 컨트롤러는 총 3가지이다.post 데이터를 저장하는 컨트롤러, schedule 데이터를 저장하는 컨트롤러, post와 schedule의 데이터를 가져오는 컨트롤러이렇게 3가지가 필요하고 가장 먼저 post 데이터를 저장하는 컨트롤러를 구성해 보고 이를 토대로 나머지도 구성하도록 하겠다.우선 데이터를 저장할 E..
Jlaner 개발기록 3 로그인 구성 (Oauth2, JWT, security) 이번 포스팅은 저번 포스팅에 이어 로그인 로직의 개요를 알아보고 레디스를 통해 토큰을 관리하는 구성을 했기 때문에 이번 포스팅에서는 전반적인 보안 설정과 어떤 보안 설정을 했는지를 알아볼 것이다.우선 토큰을 발급하는 부분과 사용하는 부분에 대해 알아볼 것이다. 토큰에 관련되어서는 jwt 토큰 사용에 대해 포스팅한 부분에서 자세히 알 수 있다. JwtProperties.class@Setter@Getter@Component@ConfigurationProperties("jwt")public class JwtProperties { private String secretKey;}환경 설정인 application.yml에서 secretkey를 간편히 사용하기 위해 만든 클래스이다. TokenProvider.c..