본문 바로가기

개발

(9)
[CI/CD] (5) CD 구축하기 - GitHub Actions 앞서 AWS EC2, S3, CodeAgent까지는 설정을 완료했고, 마지막으로 github workflow와 appspec.yml 그리고 실행한 script 파일을 완성하여 CICD 파이프라인 구축을 마쳐보겠습니다. 1. appspec.yml version: 0.0 os: linux files: - source: / # Repository(S3) destination: /home/ubuntu/app # EC2 instance permission: - object: /home/ubuntu/app/ owner: ubuntu group: ubuntu mode: 755 hooks: ApplicationStart: - location: deploy.sh timeout: 60 runas: root appspec...
[CI/CD] (4) CD 구축하기 - AWS [CI/CD] (3) 설정 총정리에서 정리한 내용을 직접 구현하고, CI/CD 구축을 마무리해보겠습니다. 1. AWS EC2 EC2 인스턴스 생성에 대한 자세한 내용은 아래 글 혹은 기타 EC2 생성 관련 글을 참고하시면 됩니다. 이번 프로젝트에서는 Ubuntu 20.04 버전을 이용했습니다. https://lback.tistory.com/4 (1) IAM 역할 부여 S3와 CodeDeploy에 대한 접근 권한을 부여하는 과정입니다. 위와 같이 설정하면 됩니다. 이렇게 생성한 IAM 역할을 EC2에 부여하면 됩니다. AWS 콘솔 - EC2 - 인스턴스 이름 우클릭 - 보안 - IAM 역할 수정 (2) JDK, CodeDeploy Agent 설치 JDK는 자신의 프로젝트에 맞는 버전을 설치하면 됩니다. 자..
[CI/CD] (3) 설정 총정리 앞서 개념적인 흐름에 대해서는 살펴보았고, GitHub Actions와 AWS CodeDeploy를 통해 CI/CD 프로세스를 구축하기 위한 설정을 전체적으로 정리해보겠습니다. 이번 글을 통해 개념적으로 정리하고, 이어지는 글에서 직접 구축하는 과정을 자세히 정리하겠습니다. 전체적으로 정리하면 위 그림과 같고, 여기에서 EC2 -> S3 -> CodeDeploy -> GitHut Actions 의 순서대로 하나하나 어떤 설정을 해주어야 하는지 살펴보겠습니다. 1. EC2 (0) EC2 생성 먼저 서비스를 배포할 EC2 인스턴스를 생성합니다. (1) IAM 역할 부여 EC2에 S3 저장소와 CodeDeploy를 이용할 것이기 때문에, 2개에 대한 권한을 가진 역할을 부여해야 합니다. (2) JDK, Cod..
[CI/CD] (2) CD 흐름 파악하기(AWS Code Deploy) https://lback.tistory.com/19 GitHub Actions를 통해 CI를 구축한 것에 이어서 GitHub Actions + AWS Code Deploy를 통해 CD를 구축해보겠습니다. 1. 배포 구조 GitHub Actions와 AWS Code Deploy를 통해 CI/CD 파이프라인을 구착하는 전체적인 구조는 다음과 같습니다. 각각의 역할을 먼저 살펴보겠습니다. GitHub(GitHut Actions) Master Branch로 push 이벤트가 발생하면, GitHub Actions에 정의한 workflow에 따라 배포 프로세스를 진행합니다. AWS S3 - Repository 배포에 사용될 코드를 저장합니다. (S3를 사용하지 않고, GitHub를 Repository로 사용할 수도..
[CI/CD] (1) Github actions로 CI 구축하기 목표 다음을 목표로 CI/CD 파이프라인을 구축하고 있습니다. ① Master Branch로 pull request가 발생 시, 자동으로 build 및 테스트 수행 ② Master Branch로 push하는 경우, 자동으로 AWS EC2에서 서버 재실행 이번 글에서는 Github actions를 통해 기능 ①을 구현하는 과정을 정리해보겠습니다. 1. Github actions 현재 CI/CD를 구축하고자 하는 프로젝트가 큰 규모의 프로젝트가 아니기 때문에, 비교적 쉽게 배우고 적용할 수 있는 github actions를 통해 CI/CD 파이프라인을 구축하기로 했습니다. Github actions를 활용하면 특정 이벤트가 발생했을 때 수행할 작업들을 명시해주면 됩니다. ex) master로 PR이 발생하면..
[Git] 하나의 저장소에 여러 프로젝트 추가하기(subtree) 블로그에 사용되는 예제 코드를 깃허브에 저장하고 싶은데, 다 저장소로 생성하기에는 지저분해서 하나의 저장소에서 관리하고 싶었습니다. subtree 명령어를 이용하면 되는데, 매번 생성할 때마다 찾아보게 돼서 한번 정리해두겠습니다. (1) 프로젝트를 모아둘 저장소 생성 먼저 프로젝트를 모아둘 저장소를 생성합니다. 이후 로컬에서 git clone을 통해 저장소를 클론합니다. git clone https://github.com/[USERNAME]/[REPOSITORY_NAME].git (2) 예제 저장소 생성 다음으로 예제 코드를 또 별도의 저장소로 생성합니다. (3) subtree 사용 (1)에서 clone한 디렉토리로 이동한 후, 다음 명령어를 실행합니다. git subtree add --prefix=[하..
[REST API] 리스트를 JSON으로 반환할 때 주의할 점 강의를 보다가 REST API에서 리스트를 JSON 형태로 반환할 때 주의할 점을 새롭게 알게되어 정리해두겠습니다. 1. 문제 상황 간단하게 Person class를 작성하고, List을 반환하는 API를 작성해보겠습니다. @RestController @RequiredArgsConstructor public class MemberController { @GetMapping("/api/people") public List getMembers(){ Person person1 = new Person(1L, "david"); Person person2 = new Person(2L, "messi"); List list = new LinkedList(); list.add(person1); list.add(perso..
[Web] JWT 이 글에서는 JWT에 대해 정리해보겠습니다. 1. 세션 인증 JWT 에 대해 살펴보기에 앞서, 먼저 세션을 통한 인증 방식에 대해 간단하게 살펴보겠습니다. 세션을 이용한 인증은 서버 측에서 사용자의 정보를 저장하여 이뤄집니다. 세션을 이용하면 저장과 삭제를 통해 꽤나 간편하게 로그인 과정을 처리할 수 있습니다. 1. 로그인 요청 2. 로그인 처리 -> 세션에 사용자 정보 저장 3. 로그아웃 요청 -> 세션에서 사용자 정보 제거 세션은 사용자의 정보가 서버에서 보관되는 방식이기 때문에, 보안상으로 안전한 편입니다. 참고로 기본적으로 세션은 서버의 메모리에 사용자의 정보를 저장합니다. 다만 메모리의 단점을 극복하기 위해 하드 디스크나, DB까지 다양하게 사용한다고 합니다. 2. JWT (1) JWT란? 세션..
[Web] OAuth 2.0 OAuth 2.0에 대해 정리해보겠습니다. 1. OAuth 2.0 (1) OAuth 2.0 이란? OAuth 2.0은 기본적으로 '권환을 위임받기 위한 프로토콜' 입니다. 이를 보다 자세히 이해하기 위해서는 3가지 주체가 필요합니다. A라는 서비스에서 B라는 서비스에 저장된 사용자의 자원이 필요하다고 가정해봅시다. (대표적으로 소셜 로그인이 그 예 입니다.) (1) Resource Owner 서비스를 이용하는 사용자입니다. (2) Resource Server 위 가정에서 B 서비스가 resource server에 해당됩니다. (3) Client Server 위 예시에서 A 서비스가 client server가 됩니다. 이를 바탕으로 OAuth 2.0을 좀 더 자세히 설명하면, OAuth 2.0은 clien..