2024/07 27

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 스프링부트 실행

스프링 부트 실행 프로세스스프링 부트 애플리케이션 실행한다.@ComponentScan 어노테이션이 있는 경우 베이스 패키지와 그 하위 패키지에서 @Component가 달린 클래스를 찾는다.필요한 경우 @Component가 달린 클래스의 오브젝트를 생성한다.이때 생성하려는 오브젝트가 다른 오브젝트에 의존한다면, 즉 멤버 변수로 다른 클래스를 갖고 있다면 그 멤버 변수 오브젝트를 찾아 넣어줘야 한다. @Autowired를 사용하는 경우 스프링이 그 오브젝트를 찾아 생성해 넣어준다.1) @Autowired에 연결된 변수의 클래스가 @Component가 달린 클래스인 경우 스프링이 오브젝트를 생성해 넘겨준다.2) @Autowired에 연결된 변수의 클래스가 @Bean 어노테이션으로 생성하는 오브젝트인 경우 @B..

개발 2024.07.20

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 스프링부트 설정

자바 서블릿(Java Servlet)  >> DispatcherServlet 대체[Spring Boot 사용 전]자바 서블릿(Java Servlet)대표 서블릿 컨테이너 ( Apache Tomcat, Jetty, JBoss 등)클라이언트의 요청을 처리하고 서버 측에서 동적인 콘텐츠를 생성웹 요청을 기반으로 각 알맞은 비즈니스 로직을 호출하는 역할서블릿 기반의 서버를 사용하려면 개발자는 javax.servlet.http.HttpServlet을 상속받는 서브 클래스를 작성해야 한다.그러면 서블릿 컨테이너가 서블릿 서브 클래스를 실행시킨다.http 요청이 서버로 전달되면 웹 서버는 받은 요청을 해석해 해당되는 서블릿 클래스를 실행한다.package com.example.Demo;import java.io.*;..

개발 2024.07.19

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 의존성 주입

스프링 프레임워크와 의존성 주입의존성 주입 (DI, Dependency Injection)객체가 다른 객체에 의존하는 것을 명시적으로 선언하고 외부에서 해당 객체의 인스턴스를 주입하는 설계 패턴 의존성 [생성자 내부에서 오브젝트 초기화]public class TodoService { private final FileTodoPersistence persistence; public TodoService() { this.persistence = new FileTodoPersistence(); } public void create(...){ ... persistence.create(...); }} TodoService 클래스는 Todo 목록을 관리하는 기능이다.FileTodoPersis..

개발 2024.07.18

[React.js, 스프링부트, AWS로 배우는 웹 개발] 1장 - HTTP 메서드

웹 개발 경험 없이는 컴퓨터 시스템 흐름을 평생 이해하기 어렵겠다 싶어서 개발... 까짓거 해보자 싶어서 냅다 도서관에 달려가 책 한 권을 빌렸다.  애플리케이션의 아키텍처HTML/CSS/React.js프론트엔드 애플리케이션 개발에 사용프론트엔드 클라이언트를 반환하는 서버는 역할이 하나이다. React.js 애플리케이션을 반환하는 것이다!스프링부트백엔드 애플리케이션 개발에 사용스프링부트로 REST API를 구현. 이 API는 프론트엔드 애플리케이션이 사용한다. HTTP ( HyperText Transfer Protocol)  애플리케이션 레벨(L7)의 네트워크 프로토콜하이퍼텍스트 ('다른 문서로 향하는 링크가 있는 텍스트') + 트랜스펄 프로토콜 ('통신 규약')하이퍼링크를 위한 마크업 언어 사용자는 브..

개발 2024.07.16

[React.js, 스프링부트, AWS로 배우는 웹 개발] 1장 - 어노테이션

어노테이션(Annotation)Java 코드에 메타데이터를 추가하는 특별한 형식의 주석특정 동작을 수행하기 위해 사용빈 정의, 의존성 주입 등에 사용@Component : 클래스가 빈으로 등록됨@Autowired: 의존성 주입을 자동으로 처리@Service : 서비스 계층에 사용되는 빈@Repository: 데이터 접근 계층에 사용되는 빈@Controlloer: 웹 계층에 사용되는 빈계층서비스 계층데이터 계층웹 계층목적비즈니스 로직 처리데이터베이스와 상호작용프론트. 컨트롤러와 뷰로 구성  XML 설정 (XML Configuration) 애플리케이션의 설정 정보Spring 컨테이너가 관리할 빈을 XML 파일에 설정   ( ex_  )  @SpringBootAppli..

개발 2024.07.16

여러 Account 및 VPC에서 하나의 CodePipeline 공유

참고 자료: https://youtu.be/F5ZPD3Z53so?si=DOOXLH6oAMIRY1yp여러 Account 및 VPC에서 여러 CodePipeline 구성 Account 및 VPC 갯수가 많은 대규모 시스템일 경우, 환경별 CodePipeline을 구성하고 Sync하는 방식으로 진행하는 것이 옳을 것 같다.하지만 비용 및 공수가 환경별로 들며, 푸시를 환경별로 해야하는 부담이 있다. 여러 Account 및 VPC에서 하나의 CodePipeline 구성Account 및 VPC 갯수가 많지 않은 시스템을 구성하고 있을 경우,하나의 코드파이프라인을 환경별 계정에서 공유하는 방식을 권장한다. Cloud A 계정에 CodePipeline을 구성하고, 환경별 Account(Dev, Product) 및 V..

AWS/Project 2024.07.13

Google Cloud Summit 2024 후기

첫 Google Cloud Summit에 방문하였습니다. ㅎㅎ특히, 신라 호텔에서 진행한다고 해서 떨리는 마음으로 방문했지만 생각보다 내부가 좁아서 실망스러웠습니다.... Google Cloud Summit은 총 3 개의 트랙을 주제로 강연을 진행했습니다.저는 여기서 "Track 1 - AI"를 듣고 왔는데요.왜 AI를 들었냐 하면... 사실 구글하면 떠오르는 게 ChatGPT 밖에 없어서 Generative AI 를 들었습니다.  * 사진 순서는 시간순이 아니라 이해를 돕기 위해 개념 → use case 순으로 재구성하였습니다.  현재 Gen AI의 수준은?요즘 대학생들이 chatGPT 없이 과제하기 힘든 것처럼...genAI는 사람보다 많은 데이터들을 학습되어 있어 사람의 수준보다 월등히 뛰어날거라고..

API 그리고 AP 서버란 무엇인가?

사실 나는 API 개념을 이해 잘 못했다.그래서 인턴 때도 이 아키텍처는 AP 서버가 있고 저 아키텍처에서는 API 서버가 있고, 다른 아키텍처에는 WAS 서버가 있어서 다 다른 용도인줄 알았다. 비즈니스 로직이 저장되어있다는 WAS 서버... 비즈니스 로직이 무엇인가. 몰랐었다.그리고 내부 호출 api에 도메인이 왜 필요한가. 에 대해서도 몰랐었다.개발을 안해보니 확실히 소통에 있어서 문제가 있음을 느꼈다.이번에 실제 업무를 진행하면서 개발경험이 있는 동기한테 많이 배운 것 같다.. 동기가 "API 서버는 API용일뿐이고 실제 데이터는 DB에 저장이 된다. API 서버에서 저장되는 건 없다!! " "사용자가 앱apk를 다운받고 앱에서 '조회' 버튼을 누르면 내부 api 호출이 일어나 실제 서버에 닿고 ..

AutoScaling 중 Scale-out 발생 시 구 버전 이미지(CI/CD) 배포

참고 사이트https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/integrations-aws-auto-scaling.html 배포 중 이벤트 확장  Amazon EC2 Autoscaling Group 와 CodeDeploy가 연동된 상황이다.CodeDeploy 배포가 진행되는 동안 Auto Scaling Scale-out 이벤트가 발생되면 해당 인스턴스는 최신 개정판이 아닌, 애플리케이션의 이전 개정판을 받는다.해당 인스턴스를 최신 상태로 만들기 위해 CodeDeploy는 자동으로 후속 배포를 시작하여 오래된 인스턴스를 업데이트해야 한다.  오래된 인스턴스에 대한 자동 업데이트 1. CodeDeploy API2. AWS CLI방식은 총 2가지가 ..

AWS/TroubleShooting 2024.07.02