일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring Security
- 스프링 시큐리티
- spring cloud
- Spring
- vm
- mysql
- 영속성 컨텍스트
- Container
- 스프링
- 도커
- 컨테이너
- Java
- CS
- web server
- CI/CD
- 백엔드
- 자바
- ORM
- 스프링 부트
- computer science
- JPA
- spring boot
- virtualization
- 스프링 배치
- 데이터베이스
- 웹 서버
- 가상화
- spring batch
- HTTP
- 배포
- Today
- Total
목록2024/11 (10)
개발 일기

탄지 프로젝트를 진행하던 도중 기존에 웹에서 연결하던 것과 똑같이 처리했더니 제대로 처리가 되지 않았다.기존 웹에서 구글 소셜 로그인을 한다고 가정해보자.프론트엔드에서 "구글로 로그인하기" 버튼을 클릭하면, Spring Security와 OAuth2 Client를 사용해 https://drinkguide.store/oauth2/authorization/google로 요청을 보낸다. 이후, 설정된 redirect-uri로 리다이렉트되며 실제 Google OAuth2 로그인이 진행된다. 소셜 로그인에 성공하면, Spring 서버는 callback-uri로 리다이렉트하면서 쿼리 파라미터로 accessToken과 refreshToken을 포함하여 반환한다. 그러나 똑같이 크롬 익스텐션으로 구현을 했더니 제대로 ..

'드링크히어'를 위해 VPC 생성 후 Public Subnet/Private Subnet으로 다 분리한 후 ECS, RDS 그리고 ElastiCache를 배치한 뒤 InternetGateway가 위차한 Public Subnet에 Bastion Host를 배치했다.처음에는 어차피 Private Subnet에 위치한 RDS에 Workbench를 통해 접속하기 위해 생성했지만 어차피 노는 서버라서 Jenkins도 같이 사용하면 좋지않을까해서 Jenkins를 설치해봤다. Java21과 Jenkins를 설치하고나서 free -h를 했을때 아래와 같이 약 300MB 밖에 안남은 것을 확인했고 실제로 빌드하게 종종 터지는 현상이 있었다.프리티어의 경우 아마 30GB의 디스크 용량을 제공하지만 메모리(RAM)의 경우 ..

ECS를 VPC 안 Private Subnet에 넣어놨을때 VPC 외부의 ECR로부터 이미지를 받아와서 실행시켜야하는데 이때 NAT Gateway와 Internet Gateway를 지나 Public Internet으로 나간 다음 다시 ECR로 요청이 들어가야한다.그러나 VPC Endpoints를 사용하면 ECS가 Private Subnet에서 실행될 때 NAT Gateway와 Internet Gateway를 통해 퍼블릭 인터넷으로 나가지 않고도 ECR에 접근할 수 있다고 한다.VPC EndpointVPC 엔드포인틀를 통해 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결을 필요로 하지 않고 AWS PrivateLink 구동 지원 AWS 서비스 및 VPC 엔드포..

NAT Gateway"NAT Gateway는 Amazon Virtual Private Cloud(VPC)의 프라이빗 서브넷에 있는 인스턴스에서 인터넷에 쉽게 연결할 수 있도록 지원하는 가용성이 높은 AWS 관리형 서비스" NAT Gateway / NAT InstancePrivate 인스턴스가 외부의 인터넷과 통신하기 위한 통로NAT Instance는 단일 EC2 인스턴스 / NAT Gateway는 AWS에서 제공하는 서비스NAT Gateway / Instance 모두 서브넷 단위Public Subnet에 위치해야한다. Bastion Host"외부에서 사설 네트워크에 접속할 수 있도록 경로를 확보해주는 서버"Private 인스턴스에 접근하기 위한 EC2 인스턴스Public 서브넷에 위치해야한다.

보안 그룹(Security Group)"보안 그룹은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 한다."NACL과 함께 방화벽의 역할을 하는 서비스Port 허용기본적으로 모든 포트는 비활성화선택적으로 트래픽이 지나갈 수 있는 Port와 Source(From) 설정 가능Deny는 불가능하다 ➜ NACL로 가능인스턴스 단위하나의 인스턴스에 하나 이상의 SG설정 가능NACL의 경우 서브넷 단위설정된 인스턴스는 설정한 모든 SG의 룰을 적용 받음기본 5개, 최대 16개Inbound : 들어오는 포트 + 요청을 받는 포트Outbound : 보내는 포트 + 응답을 보내야하는 포트Stateful : 외부에서 서버로 들어오는 트래픽이 있을 때(예: HTTP 요청), 해당 요청에 대한 ..

VPC(Virtual Private Cloud)우리가 흔히 사용하는 서비스들은 Public Internet에 존재하여 사용할 수 있는 것이다.AWS DynamoDB, S3, ECR 등 VPC 외부에 있는 AWS 서비스 들 또한 Public Internet을 통해 엑세스 한다. 그러나 VPC는 Public Internet을 통해 접속할 수 있는 것이 아니기 때문에 외부에서 다이렉트로 엑세스 할 수 없다.이때 AWS Services 또한 다이렉트로 VPC 내부에 엑세스 할 수 없는 것은 마찬가지이다.그래서 예를 들어 VPC 내부의 한 EC2 인스턴스에서 S3에 엑세스하고자 한다면 Internet Gateway를 통해 Public Internet으로 나간 다음에 다시 AWS Services의 Amazon S3..

Amazon SageMaker, Amazon Lex, Amazon Polly, AWS Batch 등이 ECS를 기반으로 동작한다. Built for Security, Reliability, Availability, and Scale 컨테이너 오케스트레이션 도구의 구조는 Control Plane과 Data Plane이 있는데 사용자가 원하는 상태로 동작하도록 관리하는 것이 핵심이다.Amazon ECS Construct크게 3가지로 구성된다. 첫번째로 Cluster테스크가 실행되는 논리적 그룹Region 내 서비스 및 작업의 논리적 그룹화IAM은 클러스터에 대한 사용자 권한 제어기본 인프라를 EC2를 사용할지 Fargate로 사용할지클러스터 생성 시 EC2 선택하면 ECS AMI 사용한 AutoScaling..

이슈처음에 아래와 같은 구조로 스프링부트 멀티모듈 프로젝트를 구성했다.그런데 기존에는 api모듈을 하나로 해서 진행했는데 장기간 개발해야하는 프로젝트여서 각 기능별로 분리해서 모듈화하기로 했다.그런데 기존에는 api가 하나로 되어있어서 단순히 bootJar를 true, jar를 false로 해놓고 jar로 묶어 도커 이미지를 만들어 배포를 했었느데 bootJar와 jar에 대해 잘 알지 못한 상태로 개발을 진행하여 모든 api모듈들의 build.gradle을 bootJar {enabled = true}jar {enabled = false}위와 같이 설정하였고 execute-app하위에 생긴 jar파일을 통해 도커 이미지를 묶었더니 domain-rds,common과 같은 의존성은 정상적으로 주입되었지만 C..