본문 바로가기

IT 일반4

[Python] Child process 생성 작업 간에 별도의 프로세스를 만들어서 작업을 처리해야할 때가 있다. 가장 흔하게는 controller 역할을 하는 어플리케이션에서 worker 혹은 executor 등의 작업 주체를 만드는 경우가 있다. Airflow에서 Celery worker를 사용할 때가 그렇다. airflow는 worker들을 데몬으로 미리 띄워놓는게 아니라 작업이 수행되는 때에 필요에 따라 worker process를 띄워서 사용한다. 이번 포스트에서는 간략하게 python으로 child process를 띄우는 코드를 소개한다. import os print(f'Current PID : {os.getpid()}') pid = os.fork() if pid > 0: _, ret = os.waitpid(pid, 0) print("Pa.. 2022. 12. 3.
DNS ? Hostname ? Domain ? A RECROD, CNAME ? Name Server? 인터넷에 연결된 수많은 컴퓨터들은 ip로 서로를 식별한다. 일반적인 ip는 점과 숫자로 구성된다. 모든 통신의 과정에서 ip로 접근정보를 추려야하는 건 출석부의 학생들을 숫자와 문자가 혼용된 식별자로 구별해야하는 것처럼 난감한 일이다. 난감함을 피하고자 학생들에게 철수, 영희, 민수 등의 이름이 있듯이 컴퓨터에게도 보다 직관적인 이름이 붙여진다. 이를 도메인 혹은 Hostname이라고 한다. 허나 이름을 무엇으로 붙이던 거의 모든 프로토콜은 결국 ip를 이용해 접근공간을 파악한다. 따라서 도메인과 ip는 양방향적으로 수월히 변환되어야하고 이런 변환 서비스를 제공하는 것이 DNS ( Domain Name System ) 이다. 과거에는 접근이 필요한 모든 host의 정보를 client가 가지고 있었다. 요.. 2022. 9. 15.
About 유의적 버전 Semantic Version 어플리케이션 개발 과정엔 수많은 라이브러리가 사용된다. 하나의 라이브러리만 사용하는 어플리케이션은 단언컨대 없다. 그렇게 개발 과정에 포함되는 라이브러리들은 또 다른 라이브러리를 사용한다. 여기에서 의존성 문제가 생겨난다. 가령 덧셈 기능을 가진 라이브러리 Sum과 뺄셈 기능을 가진 라이브러리 Minus가 있다고 하자. 두 라이브러리를 이용해 여러 개의 덧셈 뺄셈을 한번에 수행할 수 있는 라이브러리 Math가 있고 Math 라이브러리를 이용해 개발된 어플리케이션 Calculator가 있다. 어느 날 획기적인 혁신을 통해 라이브러리 Sum에 곱하기 기능을 지원하는 multiplication 함수가 생겨났다. 그렇지만 누구보다 좋아해야할 것 같은 Calculator 개발진은 침울한 분위기다. 왜? 그들이 사.. 2022. 9. 2.
Mac os 내 경량 Linux 환경 구성하기 feat. linuxkit Mac os에서 Docker를 사용하는건 불가능하지 않다. 허나 Docker의 기본 설계 사상을 고려하자면 불가능하나 일이어야 하는게 맞다. Docker는 Linux Kernel을 이용하여 컨테이너를 구동하기 때문. Mac은 Linux 배포판들과는 다른 Kernel 시스템을 가진다. 그럼 Mac용 Docker는 Mac Kernel을 사용하는걸까? 싶지만 그렇지 않다. Mac용 Docker는 Mac에 경량의 linux 가상 머신을 띄운 후 이걸 이용해 도커를 구동한다. 이때 사용하는 것이 바로 linuxkit 이다..! linuxkit은 커스텀 linux 배포판을 가상머신으로 띄우는데 사용하는 도구로 Mac 만을 위한 건 아니다. 다만 포스팅에선 Mac os 내 경량 Linux 환경을 구성하는 것에 집중하.. 2022. 9. 2.