⚙️ Ops/CS2023. 4. 14. 12:35Race Condition

💡 Race Condition 여러 개의 프로세스가 공유 자원에 동시 접근할 때 실행 순서에 따라 결과값이 달라질 수 있는 현상 임계구역은 아래의 세가지 요구조건을 만족해야 유효한 알고리즘이 된다 Mutual Exclusion(상호 배제) 하나의 자원에는 하나의 프로세스만 접근 가능할 수 있어야 함 Progress(진행) 임계구역이 비었으면 자원을 사용할 수 있어야 한다 (Deadlock Free) Bounded Waiting(한계 대기) 언젠가는 임계구역에 진입할 수 있어야 한다 > 경쟁상태는 메모리를 공유하기 때문에 발생하며 해결방법은 스레드의 순차적 실행(동기화)을 보장하면 됨 임계구역의 일반적인 형태 do { wants[i] = true; // 프로세스가 공유 자원을 사용하겠다고 선언 while ..

⚙️ Ops/CS2023. 4. 14. 12:34Proxy & Load Balancer & WAS & VPC

💡 Proxy Forward Proxy 클라이언트와 가까이 있는 서버로 클라이언트를 대신해 서버에 요청 전달 주로 캐시서버로 사용 클라이언트의 정보 숨김 Reverse Proxy 서버를 대신해서 응답을 클라이언트로 전달 트래픽 로드밸런싱 서버 정보 숨김 💡 Load Balancer Scale-Up 서버의 하드웨어 성능을 높이는 방법 Scale-Out 서버의 개수를 늘려 부하분산 로드밸런서의 종류 L2 - Mac 주소 기반 로드밸런싱 L3 - IP 주소 기반 로드밸런싱 L4 - IP & Port기반 로드밸런싱 L7 - 클라이언트 요청 기반 로드밸런싱 💡 AWS Auto Scaling 장점 동적 스케일링 사용자의 요구에 따라 리소스의 동적 스케일링 로드 밸런싱 오토스케일링된 서버에 동적인 부하 분산 타겟 트..

⚙️ Ops/CS2023. 4. 14. 12:31HTTP

💡 HTTP API 설계 HTTP API 컬렉션 = POST 기반 등록 - 서버가 리소스 URI 결정 HTTP API 스토어 = PUT 기반 등록 - 클라이언트가 리소스 URI 결정 HTML Form 사용 = 순수 HTML + HTML Form 사용, GET, POST만 지원, 컨트롤 URI 사용(동사) URI 설계 참고 사이트 Document - 단일 개념, ex) /users/20, /files/abc.jpg Collection - 서버 주체의 리소스 디렉터리, 리소스의 생성,관리 ex) /users Store - 클라이언트 주체의 리소스 저장소, ex) /files Controller, Controll URI - 위의 사항들로 해결이 힘든 추가 프로세스 실행 (동사 사용) Status Code 1x..

⚙️ Ops/CS2023. 4. 14. 12:29Web Application & Network

💡 Native Application 장점 웹앱보다 빠르고, 설치된 기기의 시스템/리소스 접근 용이 (ex: GPS , Camera) 오프라인 환경에서 사용가능, 웹앱에 비해 보안성 ↑ , 임베디드와는 조금 다른 개념 단점 느린 업데이트, 앱스토어에 승인이 까다롭고 비용발생 웹앱에 비해 개발비용 증가 (플랫폼 호환성) 💡 TCP/IP OSI 7 계층에선 3계층인 IP와 4계층인 TCP를 합친 통신규약의 모음(프로토콜 스택) TCP/IP 4계층은 데이터가 계층이동을 할때마다 헤더를 추가하고(캡슐화), 추가된 헤더를 읽고 알맞은 행동을 취한 후 ,헤더 제거(역캡슐화) TCP 3 Way HandShaking Listen - Received - Established SYN Flag - SYN/ACK Flag -..

⚙️ Ops/CI & CD2023. 4. 9. 15:04[CI & CD - Github Actions] with AWS Code Deploy

💡 Github Actions 동작 과정 Github Repository 변화 감지 (push 트리거 등) Github Actions 작동 Github Actions에서 빌드 결과물 생성 S3로 전송 & 저장 Github Actions에서 AWS CodeDeploy에 배포 명령 CodeDeploy가 EC2에 Deploy & Run 💡 배포 준비사항 Github Actions 생성 S3 버킷 & 정적 웹 호스팅 비활성화 & Public Access 차단 해제 AWS Code Deploy EC2 생성 Github Actions 생성 & 설정 java with gradle -> start commit repo -> settings - secrets/actions -> new repository secret A..

⚙️ Ops/Kubernetes2023. 4. 7. 23:02Kubernetes Secret

💡 Secret ConfigMap과 비슷하게 Volumn과 환경변수 방식으로 Pod에 정보를 주입한다. 정의 Password, API Key, SSH Key등 보안이 중요한 정보를 컨테이너에 주입해야 할 때 사용 ConfigMap과 사용법이 비슷하지만 Secret은 ConfigMap에 비해 민감한 정보를 주입하는게 목적이다. Kubernetes는 기본적으로 Secret의 값을 etcd에 저장하며 Base64 인코딩을 한다. RBAC를 이용해 Secret 오브젝트에 대한 읽기 권한을 잘 설정해야 한다. ex: ConfigMap과 Secret을 구분 보관하여 사용자별로 권한을 나눠준다. 종류 OPaque (Generic) 일반적인 용도의 시크릿 ConfigMap과 동일한 목적으로 사용 가능 민감한 데이터를 ..

⚙️ Ops/Kubernetes2023. 4. 7. 23:01Kubernetes ConfigMap

💡 ConfigMap (Key - Value) ConfigMap & Secret 어플리케이션을 배포하다 보면 환경에 따라 다른 설정값을 사용하는 경우 사용한다 Github Actions의 Secret처럼 컨테이너 런타임 시 변수나 설정값을 Pod가 생성될 때 넣어줄 수 있다 ConfigMap Key - Value 형식으로 저장됨 Config Map을 생성하는 방법은 literal로 생성하는 방법과 파일로 생성하는 2가지 방법이 있다 ConfigMap이나 Secret에 정의하고, 이 정의해놓은 값을 Pod로 넘기는 2가지 방법이 있다 값을 Pod의 환경 변수로 넘기는 방법 값을 Pod의 Disk Volume으로 Mount 하는 방법 Literal 형식 ConfigMap 생성 키:값이 language : j..

image