스프링 컨테이너란? 1. 자바 객체의 생명주기를 관리하고 2. 생성된 자바 객체에게 부가 기능을 제공한다. 스프링에서는 자바 객체를 '빈(Bean)'이라고 부른다. 즉, 스프링 컨테이너는 스프링 빈의 생명주기를 관리하고, 생성된 스프링 빈에게 부가 기능을 제공한다. 스프링 컨테이너는 ApplicationContext라고도 부른다. 좀 더 상세하게는 스프링 컨테이너는 ApplicationContext가 상속하고 있는 인터페이스 'BeanFactory'와 구분해서 사용하지만, BeanFactory를 직접 사용하는 경우는 거의 없어 일반적으로 ApplicationContext를 스프링 컨테이너라고 한다. BeanFactory는 스프링 컨테이너의 최상위 인터페이스다. 1. BeanFactory는 빈의 생성과 관..
Comparator과 Comparable의 필요성정렬을 하기 위해서는 '기준'이 필요합니다. 기본적으로 int, double 과 같은 primitive 타입의 변수는 자연스럽게 대소 관계가 존재하기 때문에 정렬 기준을 쉽게 설정할 수 있습니다. 예를 들어, 1 하지만 객체는 정렬 기준이 자동으로 존재하지 않습니다. 예를 들어, 아래와 같은 Person 클래스를 정의했다고 가정해보았습니다.public class Person{ int age; int phoneNumber; public Person(int age, int phoneNumber){ this.age = age; this.phoneNumber = phoneNumber; }}Person p1 = ne..
배열 정렬Java 에서 배열을 정렬하기 위해서는 Arrays.sort() 메서드를 사용합니다. 이 메서드를 통해 int 형 배열을 오름차순으로 정렬할 수 있습니다. 이때, 정렬된 배열은 새로 반환되는 것이 아니라, 원본 배열 자체가 정렬됩니다.int[] arr = new int[]{34, 100, 50, 27};Arrays.sort(arr);System.out.println(Arrays.toString(arr)); //[27, 34, 50, 100] Arrays.sort() 메서드는 내부적으로 Dual-Pivot QuickSort 알고리즘을 사용하여 배열을 정렬합니다.public static void sort(int[] a) { DualPivotQuicksort.sort(a, 0, a.len..
프로젝트를 진행할 때 변경한 코드가 올려져 있는 Github Repository로 부터 서버에서 pull해서 build하고 deploy하는 과정이 너무 번거로웠다. 나는 이러한 문제를 해결하기 위해서 Github Actions를 사용하여 Repository에 특정한 이벤트(나와 같은 경우 pull request)가 발생하면 자동으로 빌드하고 빌드된 프로젝트 파일을 AWS S3에 올리도록 하였다(CI 과정). 그 후는 Github Actions가 CodeDeploy에게 배포 명령을 내리고 AWS Code Deploy Agent가 appspec.yml의 절차를 따라 배포 서버(EC2)에 배포하는 과정을 거친다(CD 과정). 이번 포스팅은 GithubActions로 S3에 저장된 빌드 파일은 EC2 인스턴스로..
프로젝트를 진행할 때 변경한 코드가 올려져 있는 Github Repository로 부터 서버에서 pull해서 build하고 deploy하는 과정이 너무 번거로웠다. 나는 이러한 문제를 해결하기 위해서 Github Actions를 사용하여 Repository에 특정한 이벤트(나와 같은 경우 pull request)가 발생하면 자동으로 빌드하고 빌드된 프로젝트 파일을 AWS S3에 올리도록 하였다. 그 후는 AWS Code Deploy가 배포 서버(EC2)에 배포하는 과정을 거친다. 이번 포스팅은 GithubActions으로 Spring Boot 프로젝트 CI 적용하는 부분을 작성하였다. Github Actions 구성요소 Github Actions Workflow의 각 job은 가상 머신 runner 또는..
코드스테이츠 백엔드 과정을 마치고 4개월이 지난 시점에서 혼자 CS 지식과 코테 공부를 하며 취업을 준비하였지만현업에서 사용하고 고민하는 부분이 무엇인지에 대해 인사이트를 얻고 싶었다. 그러던 도중 원티드에서 모집하고 있는 프리온보딩 백엔드 인턴십 8월 공고가 떴다! 백엔드 | 프리온보딩 인턴십 8월 | 원티드프리온보딩 인턴십은 동료들과 함께 다양한 기업의 기술과제를 수행하는 교육형 인턴십 프로젝트입니다. 취업(이직)을 희망하는 신입/주니어라면 누구나 참여 신청할 수 있습니다.www.wanted.co.kr 약 일주일간 Java/Spring Boot 기술 스택을 선택하여 게시판을 관리하는 RESTful API를 개발하는 사전 과제를 진행하였다.사전과제에서 통합 테스트 또는 단위 테스트 코드를 추가한 경우..
깃허브에 데이터베이스의 암호와 같은 민감한 정보를 올리면 위험하기에 민감한 정보는 따로 저장해야 한다고 한다. 나는 AWS Parameter Store에 저장하여 불러오는 방식을 택하였다. Spring Cloud 버전 확인 자신의 Spring Boot 프로젝트 버전과 맞는지 확인하고 공식 문서에서 자신의 버전과 맞는 Spring Cloud를 결정해야 한다. 이 글은 다음과 같은 환경에서 진행했다. SpringBoot : 2.7.12 Java : 11 SpringCloud : 2021.0.5 요약 1. Spring Boot 프로젝트 설정 2. AWS Parameter store 설정 3. 콘솔에서 AWS Parameter Store 불러오기 1. Spring Boot 프로젝트 설정 1. build.grad..
"4일동안 끙끙 해맸던 CI/CD 적용에 성공했다." 코드스테이츠 메인 프로젝트를 진행할 때 시간 내 기능 구현을 해야했기 때문에 CI/CD 적용에 실패하고 마음 한구석이 찜찜했는데 온전히 집중할 수 있는 시간이 있는 취준생의 신분으로 도전할 수 있었다. 그런데 왜 4일이나 걸렸느냐? 근본적인 원인을 말하자면 개인들이 작성한 블로그를 보면서 진행하느라 그랬다. 그리고 구체적인 원인을 말하자면 spring cloud aws parameter store 서비스에 관한 버전 문제였다. 나는 spring boot 2.7.12버전 프로젝트에 적용했는데 참고한 글들의 버전은 2.3 혹은 2.4 버전이었다. 버전 문제를 확인하고 성공했을 때 말할 수 없는 짜릿함. 이 맛에 개발한다. 많은 선배 개발자 분들이 충고하였..
반복된 과정을 자동화하는 CI/CD 개발자가 코드를 변경할 때 마다 빌드, 테스트, 통합, 배포하는 과정을 반복하게 된다. 반복된 과정을 매번 하는 것은 비효율적이기 때문에 자동화하는 것이 좋다. 코드를 변경하는 것은 매번 달라지기 때문에 자동화가 어렵지만 그 외 과정은 적절한 설정을 하게 되면 자동화가 가능하다. 즉, 빌드, 테스트, 통합, 배포하는 과정을 자동화하는 것을 CI/CD라고 한다. CI와 CD는 다른 과정이다. CI(Continuous Integration, 지속적 통합)란? 빌드 Build → 테스트 Test → 통합 Merge → 배포 Deploy 단순하게 배포하기 전까지의 과정이다. 개발자는 배포 전에 코드를 여러 브랜치에서 통합하는 과정을 거친다. 배포 전까지의 과정이 여러 코드를 ..
요약 1. EC2 인스턴스 생성 2. SSH 프로토콜로 EC2 인스턴스 접속 1. EC2 인스턴스 생성 1. EC2 > 인스턴스 > 인스턴스 시작 버튼을 눌러 인스턴스를 생성한다. 2. EC2를 식별할 수 있는 이름 및 태그를 작성한다. 3. 생성하려는 EC2의 OS 이미지와 버전 인스턴스 유형을 선택한다. OS 이미지는 Ubuntu 20.04 LTS를 사용하였다. 프리티어로 사용하는 경우 프리티어 사용 가능한지 여부를 꼭 확인해야 한다. * 주의 : CodeDeploy를 EC2에 설치해야 한다면 OS 이미지 및 버전을 꼭 확인해야 한다. 처음에 Ubuntu 22.04 LTS를 사용했다가 Code Deploy가 설치되지 않아 처음부터 다시 생성했다. 인스턴스 서버 크기도 마찬가지로 t2.micro가 프리..
- Total
- Today
- Yesterday
- 프로그래머스
- 네트워크
- 영속성 컨텍스트
- Spring
- githubactions
- 정렬
- aws
- CI/CD
- 지연 대기열
- DevOps
- LeetCode
- Route53
- java
- Hibernate
- IAM
- fetchcount()
- entitylisteners
- springboot
- EC2
- 영속 상태
- network
- JPA
- appliationeventlistener
- 자바
- acm
- CodeDeploy
- Spring Boot
- 트랜잭션
- persistencecontext
- CI와 CD의 차이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |