개발자를 위한 소프트웨어

엄성호·2023년 2월 21일
0

개발자를 위한 소프트웨어

개발자를 위한 소프트웨어는 무궁무진하다. 텍스트 에디터, 버전관리 시스템, 프로그래밍 언어 등 수없이 많다.
이 글에서는 사용해본 소프트웨어 위주로 정리해보고자 한다.

Visual Studio Code

VSC(Visual Studio Code)는 마이크로소프트에서 개발한 텍스트 편집기이다.
시스템 요구사항은 CPU 1.6GHz, RAM 1GB, HDD 500MB로 낮은사양으로 가볍게 설치할 수 있다.
하지만 단순한 텍스트 편집기로의 기능을 넘어 터미널, WSL과 연결, 주피터 노트북 사용, Git 연동 등 다양한 기능을 사용할 수 있고, Extensions을 설치하면 정말 무한한 확장 가능성을 가진다.
또한 AWS, Docker, Anaconda 등 다른 프로그램과 같이 사용하면 자동으로 관련 Extension을 추천해 주거나 자연스럽게 연동되어 사용할 수 있다.
거의 모든 언어를 사용할 수 있는 IDE(통합 개발 환경) 이라고 봐도 무방하다.

Visual Studio, Eclipse, Sublime text 등 여러가지 IDE와 텍스트 편집기를 사용해 봤지만 사용 경험은 VSC가 압도적으로 좋았다.

Windows Terminal

개발을 하다보면 여러가지 터미널과 마주하게 된다. 각각의 터미널 마다 구성이나 폰트가 제각각이라 눈이 아프고 불편하다.
Windows Terminal은 다양한 터미널을 통합해서 하나의 프로그램으로 사용할 수 있다.
다음 스크린샷은 현재 사용중인 윈도우즈 터미널이다.

스크린샷의 첫번째 탭은 git bash, 두번째 탭은 파워쉘, 세번째 탭은 WSL이다.
기본폰트도 깔끔하게 바꿔주고, 복붙도 Ctrl+C Ctrl+V로 가능하다.
다양한 터미널과 Shell을 사용할 수 있고, 커스터마이징도 가능하다.
Git Bash와 WSL은 PC에 설치되면 윈도우즈 터미널이 자동으로 인식하고 사용할 수 있게 해준다.

WSL2

WSL(Windows Subsystem for Linux)는 윈도우즈 환경에서 Linux를 사용할 수 있는 가상화(virtualization)이다.
쉽게 말하면 윈도우 10에서 리눅스 환경을 실행할 수 있다는 말이다.
개발을 하다보면 여러가지 이유로 리눅스를 접하게 되는데, 전에는 Virtual Box등을 사용했지만 최근에는 WSL2를 사용하는 추세인듯 하다.
주의할 점은 WSL2는 완전히 격리된 리눅스 환경이 아니기 때문에 systemd, systemctl등을 사용할 수 없고, Windows와 WSL의 네트워크를 사용하기 위해 프록시 설정을 해야할 수도 있다.

Docker

다음은 Docker를 잘 표현한 위키백과의 글이다.

도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다.
여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다.
이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.

Docker는 운영체제 수준의 가상화를 통해 완벽하게 격리된 환경을 제공한다. 어떤 환경의 머신에서 실행해도 동일한 결과를 보증한다.
처음으로 프로젝트를 만들고 배포하면 Docker의 필요성을 알게 된다. 내가 작성하고 빌드한 프로젝트는 다른 환경에서 동일한 실행을 보장할수 없다. 하드웨어, 운영체제, 운영체제에 설치된 프로그램, 프로젝트의 종속성 등등 여러가지 변수로 인해 제멋대로 실행되거나 실패하기 마련이다. 이때 Docker를 사용하면 안정적으로 배포할 수 있다.

Docker의 기본적인 사용방법은 다음과 같다.

  1. 윈도우즈에서 Docker Desktop을 설치한다.
  2. 내가 만든 프로젝트에서 Dockerfile을 작성하고 build해서 image를 만든다.
  3. 배포할 환경(리눅스)에서 Docker engine을 설치한다.
  4. image를 run해서 container로 실행한다.

Docker 사용에 익숙해진다면 Docker Compose, Docker Swarm으로 여러가지 서비스를 묶어서 사용할 수 있다.

마치며

운영체제나 버전관리 시스템은 정리하기 어렵다고 생각되어 아직 작성하지 못했다.
사용해본 소프트웨어나 환경을 생각날때 마다 작성해보면 좋을거 같다!

profile
개발자

0개의 댓글