개발환경 정리

Published: by Creative Commons Licence

Intro

개발환경은 한번 손을대면 시간가는줄 모르고 계속 더 보게되는거 같습니다. 시간이 나는대로 제가 개인적으로 사용하고 있는 개발환경을 정리해보려 하는데, 사용하고있는 노트북에서부터 시작해서 어떻게 프로젝트의 환경을 구성하고 활용하고 있는지 까지 한번 담아보려고 합니다.

사용하고 있는 장비

  • M2 macbook air : 가장 기본 사양에서 ram만 16G로 높여서 사용하고 있습니다. 이 노트북으로는 문서 작업 및 자료 검색용으로만 활용하고 무거운 작업은 일체 하지 않습니다.
  • belkin DisplayLink : macbook air에 연결할 수 있는 모니터가 1개로 제한되는데, DisplayLink를 사용하면 최대 3개 까지 모니터를 연결할 수 있습니다. 집 작업환경에는 모니터암을 붙여 32inch monitor를 두개를 연결하여 사용하고 있습니다.
  • gpu server (workstation) : deep learning 학습 및 개인 프로젝트를 수행하기위해 구성한 RTX-4090 machine입니다. gpu 외에는 AMD Ryzen 9 7950X, 128G RAM, 4T SSD 로 구성하였습니다.

서버 구성

각각의 프로젝트는 각각의 container로 완전히 분리하여 깔끔하게 구성하여 쓰고 있습니다. 한번 구성한 환경에대해 다시 신경 쓰지 않도록 docker-compose를 이용하여 완전히 정리해 두었고, 아래처럼 구성하였습니다. 아마 계속 지속적으로 수정하며 활용할듯 합니다.

  • nginx : blog에서 활용할 이미지 데이터를 저장하는 용도로 구성하였습니다.
  • blog : 블로그를 관리하기위해 만든 로컬 환경입니다.
  • paper-vision : vision분야의 주요 논문들을 쭉 구현해보기 위해 구성했습니다. nlp나 그 외 분리해야할 도메인마다 새로 구성할 예정입니다.
  • kaggle : kaggle 대회에 참가하며 만들었었는데, 아마 또 참가할때마다 이부분 수정하면서 쓸듯합니다.
  • trade-dev : 주식, 코인의 시스템 매매를 공부하기 위해 구성한 환경입니다.
  • send-ip : 외부 ip를 텔레그램 api로 계속 쏘도록 구성한 환경입니다.., ip가 언제 바뀔지 몰라서 이렇게 만들어 두었습니다. 최근 도메인을 구매하였고 ddns를 구성하게되면 내릴 예정입니다.

아래는 활용하고 있는 docker-compose.yaml 파일입니다.

version: '3.7'

services:

  nginx:
    image: nginx
    container_name: nginx
    volumes:
      - /app/nginx/:/app/nginx/
      - /app/data/nginx/:/app/data/nginx/
    command: ["nginx", "-g", "daemon off;"]

  blog:
    image: blog
    container_name: blog
    volumes:
      - /app/blog/:/app/blog/
      - /app/data/:/app/data/
    command: /bin/bash

  paper_vision:
    image: paper/vision
    container_name: paper_vision
    runtime: nvidia
    shm_size: '8g'
    volumes:
      - /app/paper-implementations/:/app/paper-implementations/
      - /app/data:/app/data
    command: /bin/bash

  kaggle_rsna_2024_dev:
    image: kaggle/rsna-2024:latest
    container_name: kaggle-rsna-2024-dev
    runtime: nvidia
    shm_size: '8g'
    volumes:
      - /app/kaggle/:/app/kaggle/
      - /app/data:/app/data
    command: /bin/bash

  trade_dev:
    image: trade:latest
    container_name: trade-dev
    volumes:
      - /app/trade:/app/trade
      - /app/data:/app/data
    command: /bin/bash

  send_ip:
    image: send-ip:latest
    container_name: send-ip
    volumes:
      - /app/send-ip:/app/send-ip
    restart: always

IDE 활용

일반적인 개발 작업

일단 기본적으로 visual studio code를 적극 활용하고 있습니다. macbook에 설치한 vscode + ssh로 각 프로젝트마다의 container에 접근하여 프로젝트를 수행하고 있습니다.

문서작업

emacs org모드를 활용하고 있습니다. macbook local에서 작업하는것을 포함하여 서버내의 문서도 TRAMP를 이용하여 원활하게 작업하고 있습니다. 정리되는대로 orgmode의 설정도 한번 정리해볼까 합니다.