-
github actions
팀프로젝트 진행중 서버 및 배포가 필요해서 github actions/aws를 사용 ci-cd.ymlname: CI/CD to AWS ECSon: push: branches: [develop] pull_request: branches: [develop]env: AWS_REGION: {REGION} ECR_REGISTRY: {ECR_REGISTRY} ECR_REPOSITORY: {ECR_REPOSITORY} CLUSTER_NAME: {CLUSTER_NAME} SERVICE_NAME: {SERVICE_NAME}jobs: build_and_deploy: runs-on: ubuntu-latest permissions: contents: read id-toke..
-
EBS,Snapshot,AMI
EBS가상 하드드라이브EC2 인스턴스가 종료되어도 계속 유지 가능인스턴스 정지 후 재 기동 가능루트 볼륨으로 사용시 EC2가 종료되면 같이 삭제됨단 설정을 통해 EBS만 따로 존속 가능EC2와 같은 가용영역에 존재Snapshot특정 시간에 EBS 상태의 저장본EBS에 사진을 찍어둔 개념필요시 스냅샷을 통해 특정 시간의 EBS를 복구 가능S3에 보관증분식 저장AMIEC2 인스턴스를 실행하기 위해 필요한 정보를 모은 단위OS, 아키텍쳐 타입(32-bit or 64-bit), 저장공간 용량 등AMI를 사용하여 EC2를 복제하거나 다른 리전 → 계정으로 전달 가능스냅샷을 기반으로 AMI 구성 가능구성1개 이상의 EBS 스냅샷인스턴스 저장 인스턴스의 경우 루트 볼륨에 대한 템플릿(예: 운영 체제, 애플리케이션 서..
-
OSI 7계층
물리 계층(Physical Layer)0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환.물리 계층은 실제 장치들(하드웨어)을 연결하기 위해 필요한 전기적, 물리적 세부 사항을 정리하는 계층이다.계층을 타고 전달된 데이터를 Bit로 변환 시켜 통신한다.포로토콜로는 RS-232가 있고 주요 장비는 허브, 리피터 등이 있다.데이터 링크 계층(Data Link Layer)인접 시스템 간 데이터 전송, 전송 오류 제어. 동기화, 오류 제어, 흐름 제어, 회선 제어데이터 링크 계층은 링크의 설정과 유지 및 종료를 담당하고 노드 간의 오류/흐름/회선 제어 기능을 수행한다.네트워크 계층에 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 탐지하고 수정한다.시스템 간 오류 없는 데이터를 전송하기 위해 ..
-
[Javascript] Hositing / Spread Operator
var 변수 선언과 함수선언문에서만 호이스팅이 일어난다.var 변수/함수의 선언만 위로 끌어 올려지며, 할당은 끌어 올려지지 않는다.let/const 변수 선언과 함수표현식에서는 호이스팅이 발생하지 않는다.console.log("hello");var myname = "HEEE"; // var 변수 let myname2 = "HEEE2"; // let 변수 /** --- JS Parser 내부의 호이스팅(Hoisting)의 결과 - 위와 동일 --- */ var myname; // [Hoisting] "선언" console.log("hello"); myname = "HEEE"; // "할당" let myname2 = "HEEE2"; // [Hoisting] 발생 Xfoo(); foo2(); fu..
-
프론트 컨트롤러(공통 로직 처리)
기존 서블릿은 URL이 맵핑된 메서드를 타고 로직을 처리공통으로 써야될 코드가 있다면 맵핑된 모든 URL의 메서드들이 그 코드를 써야함이 공통 로직을 서블릿이 받기전 FrontController 라는 객체가 받아서 먼저 처리이때 FrontController 는 서블릿 컨테이너가 맵핑시킨 서블릿의 URL과 Method 타입(GET, POST)을 처리해야함인증, 보안, 다국어 처리 등이 대표적addMapping 메서드의 URL 패턴을 모든 경로로 바꿈요청 객체에서 URI와 Method를 가져옴상황에 맞는 서비스 로직을 처리하고 결과를 return맵핑 : 어떠한 URL과 Method로 구분을 하여 어떤 컨트롤러가 수행될 건지 결정하는 역할바인딩 : 웹 요청이 들어올시에 웹 기술 대신 자바코드만 이용하여 로직을..
-
Lambda
int max(int a, int b) { return a > b ? a : b;}람다식으로 변환(a, b) -> a > b ? a : b;람다는 익명객체new Object { int max(int a, int b) { return a > b ? a : b; }};메서드는 객체 안에만 존재할수 있기 때문문제점 : Object 자료형으로 max()를 호출 불가이유 : Object 클래스에는 max()라는 메서드가 없기 때문Object 대신 FunctionalInterFace@FunctionalInterfacepublic interface MyFunction { int max(int a, int b);}class Main { public static void main(String[] args) { My..
-
포인터
메모리 주소운영체제는 메모리를 연속된 저장 공간으로 간주변수와 메모리 주소int i = 1;변수 이름: i변수 타입: int메모리 주소: 0x100값: 0x00000001메모리 주소 값0x100000x101000x102000x10301어떤 대상의 주소는 저장된 범위의 시작 주소를 의미한다시작 주소만 알면 변수 타입으로 저장 범위를 알 수 있음포인터란포인터는 메모리 주소를 저장하기 위한 변수포인터의 선언int * ptr;int *ptr1, *ptr2; // ptr1, prt2 모두 int* 타입의 포인터로 선언됨int* ptr1, ptr2; // ptr1만 포인터로 선언됨. ptr2의 타입은 intptr: 포인터 이름int*: 포인터의 타입int: 포인터의 대상타입(포인터가 가리키는 대상의 타입)포인터에 ..