320x100

전체 글 496

스웜(swarm)을 이용한 도커 컨테이너 배포_1

컨테이너를 단일 도커 호스트에만 배치하는 것은 간단하고 개발자가 관리하기도 쉽다. 그러나 많은 트래픽을 처리할 수 있는 실용적인 시스템은 여러 컨테이너가 각기 다른 호스트에 배치되는 경우가 많다. 또 컨테이너를 배치하는 방법과 하나 이상의 도커 호스트를 다루는 방법 역시 호스트 하나만을 다룰 때와는 달리 다양한 사항을 고려해야 한다. 도커 스웜이란 무엇인가? 도커 스웜은 여러 도커 호스트를 클러스터로 묶어 주는 컨테이너 오케스트레이션 도구의 한 종류이다. 컨테이너 오케스트레이션 도구없이는 도커 호스트 여러 대를 사용하는 확장성 있는 애플리케이케이션을 만들기가 어렵다. 도커 호스트에 어떤 컨테이너를 배치해야 하는지, 서로 다른 호스트에 위치한 컨테이너 간의 통신은 어떻게 제어하는지 등의 조율을 오케스트레이..

실용적인 (도커)컨테이너 구축 및 배포를 위한 지식_1

애플리케이션 내 단일 컨테이너의 적정 비중 실제 운영에서는 애플리케이션을 컨테이너 안에 어떻게 배치하는지가 매우 중요하다. 컨테이너 하나가 맡을 수 있는 적정 수준의 책임은 어느 정도일까? 세세하게 역할을 나누다가 시스템 전체의 복잡도가 올라가지는 않을까? 단일 컨테이너의시스템 내 비중은 어떻게 결정해야하는지 알아보자. 컨테이너 1개 = 프로세스 1개? 애플리케이션 + 인프라 = 도커 컨테이너 결과부터 말하자면, 컨테이너 1개 = 프로세스 1개 원칙은 괜찮게 생각될 수 있으나 지나치게 복잡해질수도 있다. 예를 살펴보자 정기적으로 작업을 실행하는 애플리케이션 정기적으로 어떤 작업을 실행하는 컨테이너가 있다고 가정해보자. 스케줄러 + 작업이 합쳐진 애플리케이션을 만든다면 컨테이너 1개 = 프로세스 1개 원칙..

젠킨스 Master/Slave 분산 빌드 환경 도커로 구축하기

젠킨스를 Master/Slave로 보통 구성한다고 한다. (사실 실무에서는 사용해본적이 없지만, 많은 블로그나 책에서 이렇게 사용한다고 한다.) 도커 컴포즈를 연습해볼겸 젠킨스를 Master/Slave로 구축을 해보자, Master : 관리 기능 및 작업 실행 지시 Slave : 실제 작업 진행 Master 젠킨스 컨테이너 실행하기 1.docker-compose.yml 작성 version: "3" services: master: container_name: master image: jenkins/jenkins:lts ports: - 9900:8080 volumes: - ./master_jenkins_home:/var/jenkins_home volumes 항목은 호스트와 컨테이너 사이에 파일을 공유할 수 ..

MSA(MicroService Architecture)란 무엇인가?

MSA(MicroService Architecture)란? 내가 생각하기에 MSA를 이해하기 가장 쉬운 한줄 정의는 '하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처' 이다. 왜 이런 아키텍처가 나왔을까? 대부분의 어플리케이션은(현재 우리도 그렇다) 전통적인 아키텍처를 뜻하는 모놀리식(Monolithic)이다. 모놀리식 아키텍처는 소규모 프로젝트에서 합리적이고 간단한 아키텍처이지만, 일정 규모 이상의 서비스가 되면 아래와 같은 한계가 발생하게 된다. 시스템 구조 파악의 어려움 빌드, 테스트, 배포 시간이 기하급수적으로 늘어남 서비스를 부분적으로 Scale Out하기 어려움 부분의 장애가 전체 서비스로 이어지는 경우가 존재(일부 모듈 변경사항 때문에 전..

동기(Sync), 비동기(Async), 블로킹(Blocking), 논블로킹(Non-Blocking)

Blocking/Non-Blocking 블로킹/논블로킹은 호출되는 함수가 바로 리턴이 되는지 안되는지에 대한 관점이다. 호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 준 다면 NonBlocking 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기한다면 Blocking Synchronus/Asynchronous 동기/비동기는 호출되는 함수의 작업 완료 여부를 누가 신경쓰느냐에 대한 관점이다. 호출되는 함수에게 callback을 전달해서, 호출되는 함수의 작업이 완료되면 호출되는 함수가 전달받은 callback을 실행하고, 호출하는 함수의 작업 완료 여부를 신경쓰지 않는다면 Asynchronus 호출하는 ..

[JAVA] 가비지 컬렉터(GarabageCollector,GC)

2020/12/19 - [프로그래밍 노트/JAVA] - [JAVA] JVM 가상머신 메모리 구조 가비지 컬렉터(GC) 애플리케이션이 생성한 객체의 생존 여부를 판단하여, 더 이상 참조되지 않거나 null인 객체의 메모리를 해제시키며 메모리를 반납한다. (Heap의 재사용) Minor GC New/Young 영역에서 일어나는 Garbage Collection 새로 생성된 객체(Instance)는 Eden 영역에 위치한다. Eden 영역에서 GC가 한 번 발생한 후 살아남은 객체는 Survivor 영역 중 하나로 이동된다. 이 과정을 반복하다가 계속해서 살아남아 있는 객체는 일정시간 참조되고 있다는 뜻이므로 Old영역으로 이동시킨다. Eden 영역에 객체가 가득차게 되면 GC 발생 Survivor0 영역에 ..

주택청약_1순위 조건 및 지역별 예치금

집을 사고 싶다. 살수 있을까? 주택청약 지역별 예치금 현재 내가 살고 있는 주소지 기준으로 예치금이 달라짐 모집공고전일까지 돈을 예치해두기만하면 됨 주택청약 1순위 조건 지금까지 주택을 보유했던 기록이 없어야함 국민주택 수도권 : 가입기간 1년과 월 납입금 연체 없이 12회 납입 수도권 외 지역 : 가입기간 6개월과 월 납입금 연체 없이 6회 납입 but, 투기지구/투기과열지구/조정대상지역 은 가입기간 2년과 월 납입금 연체 없이 24회 납입 1순위 불가 대상 : 세대주가 아닌사람, 5년 이내에 다른 주택에 당첨된 자, 2주택 이상 소유한 세대 민영주택 수도권 : 가입기간 1년 수도권 외 지역 : 가입기간 6개월 but, 투기지구/투기과열지구/조정대상지역 은 가입기간 2년 1순위 불가 대상 : 5년 이..

Life/Life 2021.01.22

서버인증방식종류_세션/쿠키, 토큰방식

서버 인증방식 종류에 대해 살펴보자. 더 불어 토큰인증방식에 사용되는 JWT도 간단하게 알아보자. 1. 세션/쿠키 인증방식 서버 측에서 사용자들의 정보를 기억한다. 사용자들의 정보를 기억하기 위해 세션을 사용한다. (메모리나 디스크 또는 데이터베이스 등을 이용. 보통 Redis를 많이 사용한다고 한다.) flow 사용자 로그인 서버에서 계정정보 검증 후 사용자의 고유한 ID값을 부여하여 세션 저장소에 저장 후 매핑되는 세션 ID를 발행 사용자는 서버에서 발급받은 세션 ID를 쿠키에 저장한 후, 요청을 보낼 때 같이 전송 서버에서는 쿠키를 받아 세션 저장소에서 데이터를 검증 후 대응되는 정보를 가져옴 특징 HTTP 요청 중 쿠키가 탈취당해도, 쿠키(세션 ID)는 의미가 있는 값이 아니기 때문에 보안상 안전..

300x250