개발자에겐 Linux와 Terminal이 필수적이다. 그 이유는 프로그램을 배포되고 동작하게 되는 환경이 Linux OS가 설치된 서버이고, 그곳에서 명령어를 전달하는 수단이 바로 Terminal이기 때문이다.
- 리눅스란 뭔가요?
- 리누스 토발즈(Linus Benedict Torvalds, 69년생)가 개발한 Unix 기반 운영체제
- GNU(GNU's Not Unix, 그누)
자선단체 FSF(Free Software Foundation)에서 설립
유닉스에 반대하여 누구나 자유롭게 사용할 수 있는 환경을 만들고자 했으나(편집기 emacs, 최적화 컴파일러 GCC, 쉘 Bash, 압축프로그램 GZip 등), 가장 중요한 커널이 빠져있었음
"1991년 2월 2일, 그는 인텔 80386 기반의 IBM PC를 구입하였다. 한 달 정도 페르시아의 왕자 등의 게임을 하면서 MINIX(Unix 기반 운영체제, Minimal + Unix)의 사본을 기다렸는데, MINIX가 도착한 직후 그는 리눅스 커널을 만드는 일을 시작하였다."
- 위키피디아
정겨운 토발즈 아저씨
매운맛 토발즈 아저씨
"컴퓨터는 에어컨과 같아서 창문(!)을 열면 쓰잘데기 없어진다."
매운맛 토발즈 아저씨2
Linux, Git(모두 무료!)을 최초로 개발함 ⇒ 오픈소스 커뮤니티에 크게 기여
구글에서 배포하는 안드로이드 역시 리눅스의 한 갈래
안드로이드 기반 스마트폰, 임베디드 시스템(구글 네스트, 삼성 TV, 테슬라 자동차 등)
서버!
- 다양한 이유로 서버는 linux 기반으로 운영되고 있음
- 안정적 (ex. 블루스크린 ⇒ 서버 중단)
- 유연성 (오픈소스 ⇒ 사용자가 소스코드를 비교적 쉽게 변경 가능)
- 무료! ⇒ 어른들의 사정💰으로 인하여 많이 사용 ⇒ 오픈소스 활성화 ⇒ 풍부한 생태계 🎉
우분투는 데비안 계열 리눅스 중 하나의 배포판이다
원래 CLI(Command Line Interface) 기반
사용자들을 위해 GUI(Graphic User Interface) 기능 추가 ⇒ 그노움(GNOME, 그놈)
서버(로컬 서버, AWS 등에 설치된 인스턴스 등)에 설치된 리눅스 환경을 사용할 수 있음 (매우 중요!)
예를 들어 우리가 만든 프로젝트를 AWS EC2 등을 통해 배포하려고 하는데 해당 서버에는 순수한 우분투 외에는 아무 것도 깔려 있지 않은 상태. 만약 git을 GUI를 통해서만 사용할 줄 안다면 여러가지 프로그램과 환경설정, 그 프로그램들의 확장 프로그램을 모두 설치한 후에야 사용 가능. (이 외에 리눅스 기반 가상 컨테이너를 사용하는 기술들
⇒ ex. Docker🐳, Kubernetes📦
⇒ 윈도우즈와의 호환은 아직 불완전한 상태, 따라서 백엔드분들은 Mac OS, Linux 둘 중 하나 선택하시는 걸로!)
서버의 다양한 동작들을 매뉴얼하게 조작할 수 없음. 쉘 스크립트를 사용한 파이핑, 스케줄링, 유저 그룹 및 파일/폴더에 대한 권한 설정 등.
그렇기 때문에 개발자들에게(특히 직접적으로 서버, 인프라를 구축해야 하는 백엔드 개발자들에게) 아주아주 중요