CS
Dockerfile 이용해서 이미지 만들고, 도커 허브에 배포하기
도커 파일 (Dockerfile)을 통해 이미지를 만들고, 이를 실행시켜 컨테이너를 만들 수 있다. Dockerfile Dockerfile은 컨테이너를 만들 수 있도록 도와주는 명령어의 집합이다. 즉, 이미지를 생성하기 위한 용도로 작성하는 파일을 말한다. 쉽고 간단 명확한 구문을 가진 text file 로 top-down 해석 컨테이너 이미지를 생성할 수있는 고유의 지시어를 가진다. 대소문자를 구분하지 않으나 가독성을 위해 사용한다. 문법 FROM : 컨테이너의 Base Image MAINTAINER : 이미지를 생성한 사람의 이름 및 정보 LABEL : 컨테이너 이미지에 컨테이너의 정보를 저장 RUN : 컨테이너 빌드를 위해 base image에서 실행할 commands COPY : 컨테이너 빌드시 ..
AWS - EC2, Elastic Beanstalk, Fargate, ECR, Lambda, ECS
AWS EC2 (Cloud Compute Cloud) AWS 에서 제공하는 가장 기본적인 형태의 클라우드 컴퓨팅 서비스 (= 클라우드 컴퓨터 한 대) AWS EC2 인스턴스를 생성한다는 것은 AMI(이미지 )를 토대로 운영체제 , CPU, RAM 으로 구성된 컴퓨터를 빌리는 것이다. 인스턴스 유형 : 인스턴스를 위한 CPU, 메모리, 스토리지 , 네트워킹 용량의 여러가지 구성 제공 auto scaling 지원 : 오토스케일링이란 CPU, 메모리, 네트워크 트래픽과 같은 시스템 자원들의 메트릭 값을 모니터링해 서버 사이즈를 자동으로 조절하는 서비스를 말한다. ec2는 갑자기 트래픽이 몰리면 자동으로 인스턴스를 자동으로 스케일링 기능을 제공한다. 탄력적 IP 주소 (Elastice Ip address) : ..
AWS - VPC, NAT,ELB, S3, CloudFront
AWS (Amazon Web Services) 아마존에서 개발한 클라우트 컴퓨팅 시스템 on - premise : 기업 자체적으로 버유한 전산실 서버에 직접 설치해 운영하는 방식 cloud computing : 인터넷을 통해 데이터를 저장하거나 , 데이터베이스, 서버 , 네트워킹, 소프트웨어 같은 도구 , 어플리케이션 등 다양한 서비스를 제공하는 방식. 이 방식을 사용함으로써 관리 비용을 줄일 수있다. AWS VPC (Virtual Private Cloud) 가상 네트워크 서비스와 퍼블릭 네트워크와 프라이빗 네트워크를 분리하고 모니터링을 할 수 있도록 해주는 서비스 즉, 독립된 가상의 네트워크 서비스 이다. 네트워크 구성과 관련된 사실상 모든 기능을 담당한다. 그림을 보면 ,인터넷 게이트웨이(입구)를 통..
DFS와 BFS 와 이진트리순회
먼저 그래프 탐색(Graph Search)이란 하나의 정점으로부터 시작해 차례대로 모든 정점을 방문한다.예시로는 도로망에서 특정 도시에서 다른 도시로갈 수 있는지 여부, 전자회로에서 특정 단자와 다른 단자가 서로 연결되어 있는지 여부가 있다.대표적은 그래프 탐색 알고리즘에는 DFS/BFS가 있다. DFS(Depth-First Search, 깊이 우선 탐색)트리나 그래프에서 한 루프로 탐색하다가 특정 상황에서 최대한 깊숙이 들어가서 확인한 뒤, 다시 돌아가 다른 루트로 탐색하는 방식이다.대표적으로 백트래킹에 사용된다.일반적으로 재귀 호출을 사용해 구현하지만, 단순하게 스택 배열로 구현할 수도 있다. (참고로 트리는 특정 조건을 만족하는 그래프이다. 즉 트리는 그래프이지만, 그래프는 트리가 아님!) DFS..
도커(docker) - 가상화(VM)과 컨테이너(Container)
도커 컨테이너 기반 가상화 도구 어플리케이션을 컨테이너 단위로 격리하려 실행하고 배포하는 기술 가상화 기술 (Virtual Macine) 하나의 물리적인 컴퓨터 자원 (하드웨어)을 가상적으로 분할해 여러 개의 가상 컴퓨터 환경을 만들어 내는 기술을 말한다. 고성능 서버를 더 안정적으로 효율적으로 사용하기 위해 등장했다. 하이퍼바이저(Hypervisor) 가상 머신을 생성하고 구동하는 소프트웨어이며 OS에 자원을 할당 및 조율한다. 호스트 OS 위에서 VM을 가상화 시켜주는 하이퍼바이저가 존재하며, 이 하이퍼바이저를 사용해 원하는 운영체제로 게스트 OS를 올려 여러가지 VM을 만들 수 있다. 하지만 이렇게 게스트 OS를 가상화하여 사용하는 방식은 각각의 독립적인 OS를 실행시켜야 하기 때문에 부팅 시간이 ..
도커(docker)
컨테이너 기술 컨테이너란 OS상에 논리적인 공간(컨테이너)를 만들고, 필요한 라이브러리, 어플리케이션을 설치해 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다. 즉 서버에서 컨테이너를 구동해 그 안에 존재하는 어플리케이션을 설정 없이 사용 할 수 있다. 컨테이너를 사용하는 이유 1. 개발자가 만든 코드를 개발환경에 상관없이 어디서든 동작시킬 수 있다. 따라서 배포가 쉽다. 개발을 하기위해서 하나의 환경을 구축하기는 많은 수고가 들어간다. 서버와 OS, 그리고 네트워크 통신 포트 구성과 개발 툴, 연동환경, 호환성, 버전 등 이러한 환경을 모든 개발자의 PC에 각각 설치하기엔 매우 불편하다. 따라서 컨테이너 기술을 통해 한번 설정한 세팅 환경을 각각 다른 서버에 배포하면 불필요한 수고를 줄일 수 있..
시간복잡도 & 공간복잡도
복잡도(Complexity)는 알고리즘의 성능을 나타내는 척도이다. 복잡도란 시간복잡도와 공간복잡도로 나뉜다. 동일한 기능을 수행하는 알고리즘이 있다면 일반적으로 복잡도가 낮을수록 좋은 알고리즘이다. 따라서 시간복잡도를 측정함으로써 알고리즘을 위해 필요한 연산의 횟수, 공간복잡를 측정함으로써 알고리즘을 위해 필요한 메모리의 양을 계산할 수 있다. 시간 복잡도 : 입력 크기에 대해 알고리즘이 얼마나 오래 걸리는지를 의미 공간 복잡도 : 입력 크기에 대해 알고리즘이 얼마나 많은 메모리를 차지하는지를 의미 하지만 효율적인 알고리즘을 사용한다고 했을 때, 보통 시간 복잡도와 공간복잡도는 일종의 거래 관계(trade off)가 성립된다. 메모리를 조금더 많이 사용하는 대신에 반복되는 연산을 생략하거나 더많은 정보..
선택정렬(Selection Sort)
선택정렬(Selection Sort) 정렬 알고리즘은 데이터를 특정한 기준에 따라 순서대로 나열한 것을 말한다. 프로그램에서 데이터를 가공할 떄 오름차순이나 내림차순 등 대부분 어떤 식으로든 정렬해 사용하는 경우가 많아서 가장 많이 사용되는 알고리즘이다. 데이터를 정렬하면 이진탐색(Binary Search)이 가능하다. 선택 정렬은 가장 원시적인 방법으로 컴퓨터가 데이터를 정렬할때를 생각해보면된다. 데이터가 무작위로 여러가지 있을 때 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두번째 데이터와 바꾸는 과정을 반복하는것이다. 즉, 매번 가장 작은 것을 선택한다는 의미에서 선택정렬이라고 한다. 주어진 배열에서 가장 작은 값을 찾는다. 찾은 가..