전체 글 (15) 썸네일형 리스트형 GitHub Actions + AWS CodeDeploy CI/CD 트러블슈팅 최근 코테이토에서 진행한 날씨 관련 미니 프로젝트에서 CI/CD를 구현하기 위해 GitHub Actions와 AWS CodeDeploy를 사용했다.빌드 → S3 업로드 → CodeDeploy 배포까지는 정상적으로 완료되었는데, EC2에서 애플리케이션이 실행되지 않는 문제가 발생했다.문제 상황처음에는 어디서 문제가 발생했는지 파악하기 어려웠다.GitHub Actions 워크플로우는 성공 상태S3에도 압축 파일도 정상 업로드EC2에도 파일이 복사된 것으로 보였음그런데 애플리케이션은 실행되지 않았고, 로그도 생성되지 않았다.CodeDeploy 로그 확인CodeDeploy 로그를 확인해보니 다음과 같은 메시지가 있었다LifecycleEvent - AfterInstallScript - scripts/deploy... 생성 메서드(팩토리 메서드)와 생성자 접근 제한 김영한 강사님의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의를 참고했습니다왜 객체 생성 방식을 고민해야 할까?단순한 엔티티라면 생성자나 setter만으로도 충분할 수 있다하지만 연관관계가 복잡한 도메인 객체에서는 얘기가 다르다 ex) 주문(Order) 객체 생성// 주문 생성 예시Order order = new Order();order.setMember(member);order.setDelivery(delivery);order.addOrderItem(orderItem1);order.addOrderItem(orderItem2);order.setStatus(OrderStatus.ORDER);order.setOrderDate(LocalDateTime.now());이 방식은 다음과 같은 문.. N+1 문제란? 원인과 해결 방법! ORM을 쓰다 보면 흔히 마주하는 이슈 중 하나가 바로 N+1 문제다.ORM은 객체와 데이터베이스 간의 변환을 자동으로 처리해주기 때문에 편리하지만, 의도치 않은 성능 문제가 발생하기도 한다.N+1 문제란?한 번의 쿼리를 실행한 뒤, 결과로 가져온 N개의 엔티티 각각에 대해 추가 쿼리를 실행하면서 총 N+1번의 쿼리가 발생하는 현상이다. 예를 들어 게시글을 한 번에 100개를 조회했는데, 각 게시글마다 댓글을 따로 조회하게 되면 쿼리는 총 101번 실행된다.이렇게 연관된 데이터를 하나씩 조회할 때 발생하는 반복 쿼리 문제가 N+1이다.연관 관계를 명시하지 않아도 발생한다N+1 문제는 @ManyToOne이나 @OneToMany같은 연관 관계에서 Lazy Loading 때문에 발생하는 것만은 아니다. 현재 .. AWS RDS MySQL 인텔리제이 연결 트러블슈팅 문제 상황RDS 데이터베이스에 다음과 같은 연결 정보를 사용하여 인텔리제이에서 연결하려 했으나 실패url: jdbc:mysql://kampus-db.cp06oo6ocld7.ap-northeast-2.rds.amazonaws.com:3306/kampusprod?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTCusername: *****password: ***** 오류 메시지DBMS: MySQL (no ver.) Case sensitivity: plain=mixed, delimited=exactIncorrect driver and/or database URL specified. 이 오류 메시지를 분석해보자 !DBMS: MySQL (no ver.).. 어떠한 개발자가 될 것인가 컴퓨터공학과 진학 계기어느날 아빠가 ‘Daum이랑 Naver가 그렇게 근무 환경이 좋다더라! 너도 컴퓨터 배워서 들어가 봐~’ 라고 했었다.그 당시 중학생이었던 나는 꿈이 없었다. 단지 아빠 말 한마디에 ‘좋은 환경에서 대우 받으면서 일한다니 멋지잖아?’하며 Daum에 입사하기 위해 컴퓨터공학과를 가기로 마음을 먹게 되었다. 대학 입학 후, 같은 과 대부분의 친구들이 전공 수업 과제를 할 때마다 과가 안맞는다며 힘들어하던 기억이 있다.나는 다행히도 과가 잘 맞았는지 과제도 나름 재밌고, 성적도 굉장히 잘 나와서 이 길을 쭉 오게 되었다! 럭키비키~ 그렇지만 웹 페이지를 만드는 과제는 정말 너무너무…. 재미가 없었고날 것(?)의 데이터를 잘 가공해서 의미 있는 데이터로 만들고, 시각화하는 과제는 정말 재밌.. 객체 지향 프로그래밍의 5가지 설계 원칙 - SOLID 객체 지향 프로그래밍에서 좋은 설계를 위한 SOLID 원칙에 대해 공부해보자.1. 단일 책임 원칙 (SRP: Single Responsibility Principle)한 클래스는 한 가지 책임만 가져야 한다. 클래스가 변경되어야 하는 이유는 오직 하나뿐이어야 한다는 의미하나의 클래스가 여러 책임을 가지면 변경 사항이 생겼을 때 예상치 못한 부작용이 발생할 수 있다. // 단일 책임 원칙을 위반한 예public class User { private String name; private String email; // 사용자 데이터 관련 메서드 public String getName() { return name; } public void setName(String name) { th.. 객체 지향 프로그래밍 (OOP, Object Oriented Programming) 개발 공부를 하다 보니 '객체 지향적으로 설계하라'는 말을 자주 듣게 되는데, 이게 뭔지 확실히 정리해보려고 한다. 객체 지향 프로그래밍(OOP)의 기본 개념이랑 특징에 대해 알아보자. 객체 지향 프로그래밍이란?객체 지향 프로그래밍은 현실 세계의 사물이나 개념을 '객체(Object)'라는 단위로 모델링해서 프로그램을 구성하는 방식이다. 각 객체는 자신만의 상태(데이터)와 행동(메서드)을 갖고, 이 객체들이 서로 메시지를 주고받으며 협력하는 방식으로 프로그램이 돌아간다. 예를 들어, 커피숍 주문 시스템을 만든다고 생각해보자'고객' 객체: 이름, 포인트 같은 정보와 '주문하기' 같은 행동을 가짐'메뉴' 객체: 음료 종류, 가격 정보와 '항목 추가/삭제' 같은 행동을 가짐'주문' 객체: 주문 항목, 총액 정보.. Spring에서 Bean 등록하는 2가지 방법 Spring에서는 객체를 직접 생성하는 대신 스프링 컨테이너에 Bean으로 등록하고 관리할 수 있다.이를 통해 의존성 주입(DI, Dependency Injection)이 가능해지고, 객체 간의 결합도를 낮출 수 있다. Spring에서 Bean을 등록하는 방법은 크게 2가지가 있다. 1. 컴포넌트 스캔(Component Scan) 2. 자바 코드로 직접 등록(@Configuration, @Bean 사용) 하나씩 살펴보자. 🚀1️⃣ 컴포넌트 스캔을 이용한 빈 등록Spring Boot를 실행하면, 특정 패키지 하위에 있는 @Component 어노테이션이 붙은 클래스들을 자동으로 찾아서 빈으로 등록해준다. @Componentpublic class MyComponent { public void hello.. 이전 1 2 다음