VPC와 관련 기술들
·
DevOps/AWS
VPC을 이해하기 위해선 VPN을 먼저 이해해야 한다.VPN 같은 네트워크상에 있지만 논리적으로 다른 네트워크인것처럼 동작하게 하는 기술 VPC VPC별로 네트워크를 구성하여 하나의 독립된 네트워크처럼 작동하게 하는 기술 각 VPC마다 다른 네트워크 설정을 부여할 수 있음 Subnet VPC의 IP를 더 작은 단위로 쪼개서 리소스를 나누어 배치하는 것(더 작은 아이피 범위와 높은 서브넷마크스를 갖음) 실제 인스턴스는 VPC 내부의 서브넷에 배치된다.private 서브넷과 public 서브넷private 서브넷인터넷에 접근이 불가능하고 VPC 내부에서만 통신이 가능한 서브넷public IP를 갖고 있지 않음public 서브넷인터넷에 접근이 가능하여 VPC 내부 서브넷 뿐만 아니라 외부 인터넷과도 ..
ECS 총정리
·
DevOps/AWS
ECS란?컨테이너화 된 어플리케이션을 배포, 관리, 확장할 수 있도록 돕는 플랫폼 ECS 실행 흐름을 요약한 아래 사진을 간략하게 설명해보겠다.ECR에 있는 Docker Image를 가져와 컨테이너화하여 Container 실행 단위인 Task에 올린다.Task 관리 단위인 Service에 Task들을 올린다.Service와 Task의 가장 상위 관리 단위인 Cluster에 Service가 관리하는 Task들을 EC2 또는 Fargate에 배치하여 컨테이너들을 실행시킨다.즉, Task는 컨테이너(들)을 의미하고, Service는 컨테이너를 유지/관리하는 역할이고, Cluster는 컨테이너들을 EC2 또는 Fargate에 배치하여 실행시키는 최상단의 관리 단위이다.Fargate란?(EC2와 비교)ECS 용어..
Fargate vs Lambda vs EC2
·
DevOps/AWS
FargateLambda vs FargateLambda 같은 완전한 서버리스 모델요청 이벤트가 들어오면 서버를 생성해서 요청 처리 후 서버 삭제이벤트 기반 동작 방식요청이 들어오면 자동으로 서버(컨테이너) 생성해서 요청 처리요청이 끝나면 서버를 자동으로 종료따라서 사용하지 않는 동안에는 비용 발생XFargateLambda처럼 필요할 때만 실행되어 요청을 처리하는 방식이 아닌 ECS의 Task를 컨테이너 단위로 실행하는 구조로써 컨테이너가 항상 실행되는 서비스 ECS Task가 실행되면 컨테이너는 계속해서 동작한다.요청이 없다고 컨테이너가 자동으로 종료되지 않고 Task를 종료하지 않는 이상 항상 컨테이너는 동작하고 있다.즉, 요청이 없어도 항상 실행되는 컨테이너 기반 서비스를 의미한다.항상 실행되고 ..
서로소 집합(Disjoint Set)과 Union Find
·
Computer Science/자료구조
서로소 집합(Disjoint Set)서로소 집합(Disjoint Set)이란?서로 공통된 원소를 갖고 있지 않은 두 개 이상의 집합즉, 교집합이 없는 집합들을 관리하는 자료구조이다. 서로소 집합 자료구조는 서로 다른 원소들이 같은 집합에 속해있는지를 판단하기 위해 사용하는 자료구조이다.서로소 집합엔 MakeSet, Find, Union 세 가지 연산이 있다.MakeSet새로운 집합(parent 배열)을 생성하는 연산 처음 집합을 생성할 때 각 노드는 부모 노드가 없기 때문에 자기 자신을 가르키는 parent 배열을 생성한다.int n = 10; // 노드의 개수int[] parent = new int[n];// 처음 parent 배열을 초기화 할 때는 각 노드가 자기 자신을 가르키도록 설정한다.for (..
ORM과 SQL Mapper - Hibernate, JPA
·
Back-end
ORM과 SQL Mapper - Hibernate, JPAORMORM이란?객체와 RDB 테이블을 매핑시켜 객체와 관계형 모델의 불일치 문제를 해결하고 RDB 테이블을 객체 지향적으로 사용하게 해주는 기술객체 필드 테이블 데이터 객체와 DB가 연결되어 있기 때문에 개발자가 직접 쿼리를 작성하지 않아도 표준 인터페이스를 기반으로 처리를 할 수 있다.ORM 장단점장점쿼리 작성 없이 메서드를 통해 객체 중심으로 DB를 조작할 수 있다.ORM이 DB 스키마 변경을 자동으로 처리해 주기 때문에 개발자는 Java 코드에 더 집중할 수 있다.단점세밀한 제어가 힘들기 때문에 복잡한 쿼리는 직접 QueryDSL을 통해 작성해야 한다.성능 문제가 발생할 수 있다.JPA N+1 문제 등JPA N+1 문제게시글을 조회할 때..
[스프링 핵심 원리] 빈 생명주기 콜백
·
Back-end/Spring
💡 빈 생명주기 콜백 시작데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보자.외부 네트워크에 미리 연결하는 객체 생성외부 네트워크에 미리 연결하는 객체를 하나 생성한다는 가정하에 테스트 코드를 작성해보자.실제로 생성하는 것은 아니고 가정만 하는 것이다.외부 url에 연결하는 클라이언트 클래스public class NetworkClient { private String url; public NetworkClient() { System.out.println("..