분류 전체보기 23

[Spring Cloud] Eureka Server / Client 구축하기

Eureka에 관해 간단하게 포스팅 해보겠다. 사용자가 서비스를 호출하면, 먼저 Eureka 서버에 해당 인스턴스가 등록되었는지 확인한다. 등록된 인스턴스가 확인되면, 로드 밸런서(LB)를 통해 요청을 해당 인스턴스에 전송한다. 프로젝트는 서비스 시작 시 Eureka 서버에 등록된다.API gateway 사용 이유각각의 마이크로서비스들은 서로의 포트 번호를 몰라도 된다.Front 에서는 요청을 Gateway로만 보내면 되기 때문에 Gateway 포트만 알면 모든 요청을 수행할 수 있다.모든 요청은 Gateway 를 거치기 때문에 로그를 쉽게 다룰 수 있다.Gateway 가 요청의 진입점이므로 통합 인증을 수행할 수 있다.특히, eureka로 등록한 서비스들은 랜덤 포트번호를 가지도록 하였는데 계속 바뀐 ..

Spring Boot 2024.10.15

[Ubuntu& VSC] VMware ubuntu와 VSC를 이용한 SSH 원격접속

VSC을 통해 ubuntu와 SSH 연결하는 과정을 진행했다.https://hi-sojeong.tistory.com/101 [VS Code] Remote SSH 로 VMware 가상머신과 연결하기~(+Could not establish connection 오류 해결)안녕하세요 소정입니다! gnuboard PHP 분석을 위해서 코드를 쉽게 보려고 VS Code와 연결을 하려고 하는데, 되게 막혔어서,, ㅎ 다른 분들은 좀 더 쉽게 하셨으면 해서 글 씁니당,, 연결부터 삽질하지hi-sojeong.tistory.com이 블로그를 참고하여 연결을 시도했다. - Ubuntu 22.04 - VSC- Orcale VM VirtualBox- 22번 포트만 방화벽 허용1) 문제 상황 💥진행 도중 아래와 같은 에러가 떴..

카테고리 없음 2024.09.20

[Spring JPA] @Where 어노테이션으로 인한 Foreign Key 제약 문제

프로젝트에서는 처음에 하드 딜리트를 구현한 후, 나중에 소프트 딜리트로 업데이트하기로 계획했다. 어쩌다 보니 다른 팀원 분이 소프트 딜리트를 먼저 구현 한다 해서... deleted 필드 하나 추가 하니까 먼저 구현하고 있어도 괜찮을 거라 생각했다... 이것이 재앙의 시작이였다...ㅎㅎ허헣1) 문제 발생"could not execute statement [Cannot delete or update a parent row:a foreign key constraint fails (`juinjang-db`.`limjang`, CONSTRAINT `FKjqr2spmi16ldk4bk5uvqkjj8r`FOREIGN KEY (`member_id`) REFERENCES `member` (`member_id`))] [d..

Spring Boot 2024.09.12

[CICD] Docker + Github Action + Nginx + Spring Boot를 이용한 blue/green 방식 무중단 배포

오늘은 Blue green 배포에 대해 써보겠다.1) blue/green 방식에 대한 이해blue/green 배포 방식은 트래픽을 한번에 구버전에서 신버전으로 옮기는 방식으로 blue와 green을 나란히 구성해 두 상태로 배포 시점에 트래픽을 blue에서 green으로 일제히 전환시킨다.현재 blue 컨테이너 8081포트를 바라보고 있지만green 컨테이너가 활성화 되는 동안에도 요청은 blue 컨테이너로 reverse proxy 되기에 서비스는 중단되지 않는다.  green 컨테이너 가 활성화 되면, blue 컨테이너로 보내던 요청을 green으로 향하도록 바꾸고 nginx를 reload시켜준다.  따라서 nginx는 green 컨테이너 를 바라보고 reverse proxy 시켜준다. 이를 통해 서버..

DevOps 2024.09.04

[AWS] private subnet에서 ECR 접근할 때 필요한 VPC 설정

ecr을 사용하던 도중 위와 같은 에러가 발생하였다...ResourceInitializationError: unable to pull secrets or registry auth: The task cannot pull registry auth from Amazon ECR: There is a connection issue between the task and Amazon ECR. Check your task network configuration. RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-2.amazonaws.com/": dial tcp ~~~~: i/o timeout   에러 원인은 fargate 가 ..

AWS 2024.08.26

[Thymeleaf] image 파일 적용 - Spring Security 정적 파일 권한 허용

thymeleaf를 사용하는데 계속해서 css 파일이 적용 되지 않는 상황이 발생하였다.  1) 경로 인식 문제css, js 파일이 /resources/static 경로에 위치해 있는지 확인한다.html 파일에 import 경로를 확인한다.href="{css/style.css}" ( X )href="{/css/style.css}" ( O )Thymeleaf를 이용하는 경우는 th:href="@{/css/style.css}" 2) Spring Security 설정 시 정적 파일 권한 허용 여부 확인내 경우에는 경로는 맞는데 인식이 안된 상황이였다.  security 설정을 바꾸어 보았다. @Bean@Order(0)public WebSecurityCustomizer webSecurityCustomizer()..

카테고리 없음 2024.08.19

[AWS] 아키텍쳐 구현(2): Github Action으로 AWS ECS CI / CD 자동화

https://2hy2on.tistory.com/17 [AWS] 아키텍쳐 구현(1) : HTTPS 및 로드밸런서 적용현재 내가 완성시키고자 하는 아키택쳐는 아래와 같다.사전 준비 상태1) VPC 생성 완료2) private subnet 2개, public subnet 2개 ig와 연결 완료3) kafka용 ec2 설치 완료4) public 도메인 구매 완료 이번 포스팅2hy2on.tistory.com지난 시간에 이어서 ecs와 lb 연결 및 배포 테스트를 진행해보겠다. 1. ECR 생성Private registory > Repositories > 리포지토리 생성 클릭2. Task 생성ECS > 테스크 정의 >y > Repositories > 새 테스크 정의 생성 클릭  아까 생성한 ecr에 들어가 푸시 ..

AWS 2024.08.14

[AWS] 아키텍쳐 구현(1) : HTTPS 및 로드밸런서 적용

현재 내가 완성시키고자 하는 아키택쳐는 아래와 같다.사전 준비 상태1) VPC 생성 완료2) private subnet 2개, public subnet 2개 ig와 연결 완료3) kafka용 ec2 설치 완료4) public 도메인 구매 완료 이번 포스팅에서는 Load balancer를 생성하는 과정을 담아보겠다. 기본적인 HTTP 프로토콜에 SSL 이라고 하는 인증서를 발급하여 암호화된 서버를 운영할 수 있도록 해준다.HTTPS/로드밸런서를 합쳐서 운영되는 과정을 간단하게 설명하면,1) 클라이언트에게서 요청을 받으면  해당 요청을 로드밸런서가 HTTPS(port 443) 요청인지 일반적인 HTTP(port 80) 요청인지 판단한다.2)  만약 HTTP 요청이면 이 요청을 HTTPS 요청으로 Redire..

AWS 2024.08.09

[RDS] Trigger 설정

RDS Mysql에서 trigger를 설정하는 법을 포스팅해보겠다. 먼저 트리거에 대해서 간단하게 설명해보면테이블에 부착되어서 테이블에 INSERT, UPDATE, DELETE 작업이 발생되면 자동으로 실행되는 코드를 뜻이다. 1. Trigger SQL문DELIMITER $$CREATE TRIGGER add_comment_numAFTER INSERT ON commentFOR EACH ROWBEGIN UPDATE board SET comment_num = comment_num + 1 WHERE board_id = NEW.board_id;END$$DELIMITER ; 1. DELIMITER $$ deliter는 구문의 시작과 끝을 설정해주는 역할이다.  2. CREATE TRIGGER add..

DB 2024.08.04