전체 글 148

도커 리소스 사용량 제한하기

개요 도커 컨테이너는 리소스(CPU, MEM 등)에 제한이 없다. 즉 도커가 구동하는 호스트 머신의 자원을 100% 사용할 수 있다. 이렇게 된다면 컨테이너의 리소스 사용량이 증가하게 된다면 Host PC에 영향이 갈 수도 있고 여러 애플리케이션 간에 영향을 미칠 수 있으므로 컨테이너의 리소스를 제한하는 방법에 대해 알아보자 본론 컨테이너가 사용하는 자원량 stats 명령을 통해 확인해 보자 --no-stream 제거 시 지속적으로 확인 가능 위 이미지와 같이 메모리 LIMIT가 호스트 메모리 용량과 같음을 알 수 있다. (약 8G) 메모리 사용량 제한을 update 명령을 사용해 변경을 할 수 있다. CPU 사용량 제한을 변경해 보자 --cpuset-cpus 옵섭을 사용해서 Host Pc의 CPU 중 ..

[프로그래머스] 개인정보 수집 유효기간 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 단순 string을 잘 처리할 수 있느냐의 문제이다. terms를 빠르게 처리해 주기 위해 파이썬의 딕셔너리를 사용해서 각 term에 따른 개월수를 저장했다. 그 후 cal함수를 통해 term을 더해 주었다 여기서 term의 범위는 100 이하 이므로 month가 12 이하가 될 때까지 year을 더해주는 작업이 필요하다. 그 후 보관기간이 지났는지를 판단하기 위해 strin..

Algorithm 2024.04.06

[프로그래머스] 등산코스 정하기 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 풀지 못하여 다른 분들의 풀이를 참고했다. 다익스트라를 변형한 문제였다. 이 문제의 핵심은 편도만 경로만 구하면 되는 것이다. 또 다익스트라를 적용하여 값들을 업데이트할 때 max(이전 노드의 값, 이전 노드와 현재 노드의 가중치)를 사용해야 한다. import heapq def solution(n, paths, gates, summits): graph = [[] for _ ..

Algorithm 2024.04.02

도커 기초

컨테이너는 샌드박스화 된 런타임 환경이다. 샌드박스화 : 프로세스가 보호된 영역에서 동작하여, 호스트 시스템 및 다른 프로세스에게 영향을 미치지 않는다는 것을 의미한다. 런타임 환경: 어플리케이션이 동작할 때 필요한 최소한의 실행환경 컨테이너는 호스트 OS를 공유한다. 따라서, 호스트 OS와 다른 OS 기반의 컨테이너 구동은 불가능하다. 즉, 컨테이너는 호스트 가상화처럼 게스트 OS를 호스트 OS와 분리하는 것이 아니라, 어플리케이션을 OS로부터 독립적으로 분리하는 역할을 한다. Docer는 컨테이너 가상화 기술 기반의 오픈소스 가상화 플랫폼이다. 프로세스를 격리하여 컨테이너와 같이 일정한 규격/인터페이스로 통일 CPU/메모리는 필요한 만큼만 사용 (미리 일정량을 할당해 놓는 방식이 아니다) 단 CPU/..

가상화기술(도커, 가상머신)

가상화 기술은 클라우드 컴퓨팅 서비스의 핵심 기술 중 하나이다. 가상화 실제(물리적 리소스)가 아닌, 가상의 IT 자원을 만들어내는 것 또는 그러한 기술 가상화 기술을 사용하면 가상화된 IT 자원을 이용하여 다수의 가상 머신을 생성할 수 있으며, 가상 자원은 서로 독립적임 가상화 기술의 장점 한대의 물리적 기기에서 다수의 가상 머신을 생성/관리할 수 있음 사전에 구성된 성능의 가상 컴퓨터를 반복적으로 만들어 낼 수 있음 사양, os/미들웨어,sw/라이브러리 구성이 완료된 가상 머신을 템플릿으로 만들고 새로 구성이 필요한 경우 기존에 생성한 템플릿을 사용하여 가상 머신을 쉽게 생성가능 자원 활용성 가상화 기술을 활용하면 제한 된 수의 물리적 자원을 효율적으로 운영가능 안전성 가상화 기술을 통해 만들어진 논..

시스템 디자인/확장

개요 기존 방식의 시스템 디자인 및 확장 과정을 공부하고, 이를 통해 클라우드 컴퓨팅 장점을 학습한다. 목표 간단한 SNS 시스템을 디자인 소규모 사업장을 위한 간단한 SNS 구현(직원 수 :100명) 서비스 품질(Qos)이 우수해야 한다. SNS 서비스를 제공하기 위해 필요한 서버 측 모듈/컴포넌트 웹 서버 또는 WWW + WAS 서비스 접속을 위한 웹 페이지 SNS 기능 사용 데이터베이스 디자인 디자인1: 웹 서버와 데이터베이스를 한대의 서버 컴퓨터에 설치 문제점 : 직원수가 늘어나면 정상적인 서비스가 가능? 사용자 수가 늘어나면 응답시간이 증가하고 오류가 발생한다. 디자인2: 한대의 서버를 두대로 분리 서버1에는 웹서버, 서버2에는 데이터베이스 설치 기능/역할에 따른 분할 디자인1에 비해 서비스 품..

[백준] 수들의 합 2 2003번 (python)

출처 : https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 풀이 방법 투 포인터 문제를 연습할 겸 문제를 풀어 보았다. 이중 for문으로 풀면 시간초과가 난다. 투 포인터란 배열을 순회하는 하나의 방법으로 포인터를 2개를 사용해서 순회하는 방법이다. 왼쪽 포인터와 오른쪽 포인터를 두고 풀어보자 왼쪽 포인터부터 오른쪽 포인터까지 합을 리턴하는 함수를 작성한다. 이때 배열의 합에 따라 케이스를 분리하자 배열의..

Algorithm 2024.03.24

코딩테스트 회고

개요 네이버, 카카오 코딩테스트를 치르고 난 후 KPT 회고를 진행하려고 한다. keep 연습 때 자주 뜨던 index out of range에 대한 연습이 많이 되어 있어 금방 해결했다. 2시간 동안 포기하지 않고 집중을 했다. problem 문제에서 요구하는 바를 정확하게 이해하지 못했다. 풀이 방법에 대해 증명을 하지 않고 바로 구현을 했다. BFS, DFS, DP 등 주요 알고리즘에 집착했다. 디스코드 알람이 떠 당황했다. 파이썬 리스트 복사에 대해 잘 처리하지 못했다. 그냥 listA =listB로 복사 Try 문제에서 요구하는 바가 정확하게 뭔지 생각해 보고 급하게 바로 구현에 들어가지 않는다. 풀이 방법을 생각한 후 예시를 통해 증명하고 엣지 케이스까지 생각해 본 후 구현에 들어간다. 여러 ..

회고 2024.03.24

[백준] A->B 16953번 (python)

출처: https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A B구하는 거 보단 B->A로 구해야겠다고 생각했다. 하지만 예제 정답 부분만 보고 짝수이면 나누기 2 홀수이면 -1 후 나누기 10을 했다. 예시 부분은 다 정답처리가 되었지만 1 25같은 수가 입력된다면 제대로 해결하지 못할 것이다. 그래서 10으로 나누었을 때 나머지가 1인 경우, 2로 나누었을 때 나머지가 1인 경우 다른 경우는 실패 이렇게 3가지 경우로 나누게 되었다. A, ..

Algorithm 2024.03.22

동아리 개발환경 구축 (spring boot, mysql 도커로 배포하기)

개요 개발 동아리에서 개발부장으로 스터디를 관리하게 되었다. 혼자 공부하는 것과 동아리에서 활동하는 것의 가장 큰 차이점은 협업이라고 생각했다. 그래서 프론트엔드와 백엔드의 협업 방법을 생각을 해봤다. 1. 클라우드 서버에 배포 후 백엔드 API이용 2. 프론트엔드 로컬 PC에 백엔드 서버 배포 후 API이용 1번은 돈이 든다는 문제점과 여러 가지 프로젝트진행 시 동아리 원들이 팀을 나눠 스터디를 동시에 진행하게 된다면 한 개의 EC2에 모든 프로젝트를 배포하게 된다면 포트 설정을 따로 해주어야 한다는 번거로움이 있어 2번을 선택하게 되었다. 2번을 선택한 후 프론트엔드 측에서 데이터베이스를 설치하고, 자바를 설치하고 spring boot 서버를 띄우는 것은 불필요한 작업이라고 생각이 되어 도커 컨테이너..

카테고리 없음 2024.03.20