전체 글 269

[웹 서비스] OAuth 2.0

OAuth 2.0외부 웹 서비스 계정을 이용하여 해당 서비스 권한을 간접적으로 획득하여 나의 웹 서버에서 활용하고자 할 때,외부 웹 서비스에 나의 웹 서버를 인증하는 프로토콜 나의 서비스가 유저의 구글, 야후, 카카오 등 대표 가능한 웹 서비스의 이메일 주소를 이용하고자 한다.유저의 이메일 주소를 알 수 있다면 나의 웹 사이트에서는 따로 이메일 가입을 할 필요 없이 해당 외부 웹 서비스 계정 정보를 이용하여 유저를 특정하고 계정으로 사용할 수 있을 것 이다. 참여자 서비스를 이용하고자 하는 유저 (resource owner) : 내 서비스가 참조하고자 하는 자원 (이메일 주소)를 소유한다.내 서비스 (client) : 유저의 정보를 활용하고자하는 주체. 웹 서비스가 될 수도 있고 앱 어플리케이션 자체가 ..

Web/개발 2024.12.28

Docker In Action 12. First-class configuration abstractions

도커 config와 secret에 대해 알아본다. Configuration 구성 설정 파일은 어플리케이션을 실행할 때 필요한 설정 파일을 의미하며, DB 커넥션 스트링, 각종 제약과 비즈니스 로직에 사용되는 설정값을 파일을 통해 설정하는 것을 의미. 12.1 구성 설정 배포와 관리 도커 서비스는 어플리케이션을 정의하는 이미지에 의존하는 것처럼 configuration 리소스에 의존한다. 구성 설정이나 시크릿 파일이 누락되었다면, 어플리케이션은 실행 되지 않거나 잘 못 된 행동을 유발한다. 12.2 어플리케이션과 구성 설정 분리 greetings 서비스는 "Hello World!"를 서로 다른 언어로 출력하는 서비스이다. 이 서비스의 개발자는 유저의 요청이 오면 한 인사말을 응답으로 주고 싶어한다. 번역가..

Cloud/Docker 2024.12.14

Docker In Action 11. Services with Docker and Compose

도커 서비스 구축 서비스란어떠한 프로세스 process, 기능 functionality 혹은 데이터가 네트워크를 통해 이용가능할 때 서비스라고 할 수 있다. 도커 스웜 노드를 통한 서비스 구축 및 Docker Compose 파일 작성을 통해 선언적 방식으로 서비스를 실행하는 방법을 알아본다. 11.1 Service "Hello World" hello-world 서비스 : 간단한 hello-world 컨테이너를 하나 실행하는 명령어 예제. docker swarm init // establish service abstractiondocker service create --publish 8080:80 --name hello-world dockerinaction/ch11_service_hw:v1 //..

Cloud/Docker 2024.12.14

Docker In Action 9. Public and private software distribution

공개 혹은 비공개 소프트웨어 배포 9.1 배포 방법 선택 하기여러 사항을 고려하여 개발 실정에 맞는 배포 방법을 선택하게 된다. 배포 스펙트럼 왼쪽으로 기술될 수록 배포 방식은 단순하나 제한적인 방식으로 제공된다.오른쪽으로 기술될 수록 배포 방식은 복잡하나 커스터 마이즈가 쉽게 되므로 유연하다. 선택 기준배포 방식을 선택함에 있어 기준점이 될 수 있는 요소를 나열 해본다. Cost 비용대게 낮은 비용이 최선의 선택이다. 프로젝트에 주어진 예산에 따라 결정된다. Visibility 가시성해당 프로젝트는 공개되어서는 안된다. Transportation 전송배포 환경의 네트워크 전송 속도와 대역폭은 배포 방식을 선택하는데 영향을 줄 수 있다. Longevity 지속 가능성공개되지 않은 배포 방식을 공개된 방식..

Cloud/Docker 2024.12.09

Docker In Action 8. Building image automaticall with Dockerfiles

Dockerfile 이란docker 이미지를 빌드하는 데 쓰이는 지시사항들의 모음 8.1 Dockerfile을 이용하여 ubuntu-git 빌드하기 Dockerfile이라는 이름으로 파일을 만들고 다음 내용을 작성한다.FROM ubuntu:latestLABEL maintainer="dia@allingeek.com"RUN apt-get update && apt-get install -y gitENTRYPOINT ["git"] 이미지 빌드하기docker buildx build --tag ubuntu-git:auto .auto 태그로 된 이미지가 존재하는 것을 볼 수 있다. 설명- FROM : 기본이 되는 이미지- LABEL : key=value 형태로 label을 부여한다.- RUN : 컨테이너를 실행한 후..

Cloud/Docker 2024.12.08

Docker In Action 7. Packaging software in images

이미지 빌드를 통한 소프트웨어 패키징 7.1 컨테이너로 부터 도커 이미지 빌드 도커에서 union filesystem (UFS)기반의 마운트를 통해 컨테이너의 파일 시스템 기능을 제공한다. 7.1.1 Packaging "Hello, World" 예시) 나만의 이미지 빌드-> 기존 이미지로 컨테이너를 실행하자.-> 컨테이너의 파일 시스템에 변경 사항을 만들자.-> 변경 사항을 이미지로 커밋 한다. // 1. ubuntu:latest 이미지를 가져와 컨테이너를 실행한 후 HelloWorld 파일을 만든다.docker container run --name hw_container ubuntu:latest touch /HelloWorld// 2. 현재 컨테이너를 이미지로 커밋 하자docker container c..

Cloud/Docker 2024.12.06

Docker In Action 6. Limiting risk with resource controls

A Process In Isolation, 프로세스 단위의 고립성 수준을 이용하는 도커 컨테이너 도커 컨테이너의 8가지 주요 특징MNT - filesystem access and structurechroot() - Controls location of filesystem rootCgroups - Resource protectionPID - Process identifiers and process capabilitiesNET - Network access and structureUTS - Host and domain nameUSR - Usernames and identifiersIPC - Communication by shared memory 6.1 자원 사용 가능 제어 주어진 물리 머신에서 CPU 사용과..

Cloud/Docker 2024.12.04

[C++] Memory Pool

메모리 풀 구현 32/64/128/... 바이트 단위로 메모리를 미리 할당하여, 실제 할당할 때 해당 메모리를 사용함. 장점 메모리 단편화 문제를 완화 가능. 특히 사이즈가 큰 메모리를 할당할 때 적절한 위치의 페이지를 찾는 것이 시간이 소요될 수 있다. 단점 사용하지 않는 메모리를 미리 할당하여 사용하게 되는 낭비. 메모리 풀과 같이 특정 할당자(Allocator)를 사용한 경우, 메모리를 반납하여 재사용할 수 있도록 할당자를 통한 해제를 해야한다. std::shared_ptr의 생성자에는 해제자 deleter에 대한 인스턴스를 받아 해제를 제어할 수 있다. std::unique_ptr는 타입으로 선언하여 사용한다. 커스텀 deleter를 사용하는 경우 타입 이름이 지저분해질 수 있다. MemoryHe..

Advanced C++ 2024.03.31

Docker In Action 5. Single-host networking

Docker Network로컬 컴퓨터에 연결된 네트워크는 IP 주소를 통해 인터넷 등의 통신을 가능하게 한다.도커가 만드는 가상 네트워크는 모든 실행 중 인 컨테이너와 로컬 컴퓨터가 연결된 네트워크에 연결한다. Bridge 여러 네트워크가 한 네트워크 처럼 동작하도록 연결하는 네트워크 인터페이스, 징검 다리 역할 도커 네트워크 확인 docker network ls 종류bridge 이름의 네트워크는 bridge 드라이버를 통해 제공되는 네트워크이다. bridge 드라이버는 컨테이너간 연결을 제공한다.host 이름의 네트워크에 있는 컨테이너들은 컨테이너가 아닌 일반 프로그램이 존재하는 호스트 네트워크를 공유한다. none 네트워크는 null 드라이버를 사용하고 해당 네트워크에 있는 컨테이너는 외부와 통신이 ..

Cloud/Docker 2023.10.22

Docker In Action 4. Working with Storage and Volumes

도커 스토리지와 볼륨 Storage and Volumes 파일 트리와 마운트 지점Mount Points는 호스트의 파일 시스템에 대한 루트 경로를 기준으로 데이터를 접근할 수 있는 지점을 제공한다.이러한 마운트 지점은 사용자로 하여 리눅스 환경에서의 원본 맵핑이 어떻게 되든 알 필요 없이 호스트 시스템의 파일 트리를 사용할 수 있게 해준다. 도커는 컨테이너 생성 시 MNT namespace와 유일한 파일 시스템의 루트를 제공한다.이러한 방식으로 호스트 파일 시스템으로 부터 컨테이너에서 실행되는 환경으로의 마운트 지점을 제공하여 컨테이너에게 스토리지 접근을 가능하게한다. 도커 마운트 타입도커의 마운트 타입은 3가지로 나뉜다.Bind mountsIn-memory storageDocker volumes예시)도..

Cloud/Docker 2023.10.19