전체 글 208

[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

스토리지 이중화 (Multipath/MPIO)

스토리지 연결 방식DAS (Directed Attached Storage)전통적인 소규모 스토리지 접속 방식 직접 연결된 스토리지 (HDD, USB 등)각 서버가 직접 파일 시스템 관리 필요다른 서버에서 접근 불가파일 공유/확장 어려움비용 저렴 설치 용이 NAS (Networe Attached Storage)중규모 네트워크 스토리지 접속 방식LAN 네트워크에 연결된 스토리지다른 서버도 접근 가능/파일 공유 가능DAS에 비해 확장성 우수 LAN 통해 전용 파일서버에 접속/파일전송 가능(NFS 이용) SAN(Storage Area Network) 대규모 네트워크 스토리지 접속방법네트워크를 통해 서버와 스토리지 연결스토리지 전용 고속 네트워크FC Port (HBA)를 통해 구성확장성/유연성/가용성 우수 초기 ..

네트워크 이중화 (Bonding & Teaming)

Bonding & Teaming네트워크 카드(NIC)의 이중화 구성을 bonding(Linux) 또는 teaming(Windows) 라고 함 이중화 구성 시, 가상 인터페이스가 생성됨  로드밸런싱 알고리즘0Round-RobinNIC에 하나씩 패킷을 순차적으로 전송1active-backupActive-Standby 모드2balance-xor목적지 MAC에 따라 NIC 선택  ( XOR 연산)3broadcast모든 NIC로 동일한 패킷 전송. 부하 분산 효과 없음4802.3adIEEE 8-2/3ad 프로토콜을 이용하여 결합 *5balance-tlb(TLB)부하가 낮은 NIC로 트래픽 보내고, 받을 땐 보낸 NIC에서 받음패킷이 돌아오기 전에 NIC에 Fail 발생하면 다른 NIC이 수신6balance-alb..