지지플랏의 DataScience

GCP 셋업를 위한 기본 지식: 하드웨어와 OS 개념 본문

Data Science/Engineering

GCP 셋업를 위한 기본 지식: 하드웨어와 OS 개념

지지플랏 2024. 4. 13. 14:40

이글을 쓰게된 이유

부트캠프에서 자동화 강의를 준비하다보니 생각보다 컴퓨터 기본 하드웨어 지식이 부족한 사람들이 많다. 컴퓨터 내에 덕지덕지 RAM을 차지하고 있는 프로그램이 있는지 모르고 쓴다던지... 컴퓨터를 어떤 사양의 기준으로 사야할지 등등  그래서 GCP 서버 구축하는 법을 알려줄 겸 기본적인 하드웨어 지식과 함께 강의한 내용을 정리 해보려고 한다. 

 

예상독자

  • Computer Science 지식이 전무한사람

 

1. 운영체제란

회사를 입사하게 된다면 IT직군에 한하여 맥북 vs 윈도우 노트북의 양자택일 선택지가 주어진다. (물론 선택지가 없는 경우도 많지만). 사실 이 경우 운영체제가 가장 중요한 기준이 될 것이다. 근데 운영체제가 뭐냐고 한다면.. 

  • 운영체제(OS, Operating System): 컴퓨터 하드웨어의 리소스를 관리해주면서 동시에 여러 어플리케이션이 작동할 수 있는 환경을 제공해주는 소프트웨어. 개인용 데스크탑에서는 Windows를 가장 많이쓰고, Linux, Mac 등이  존재

운영체제 종류

아마 우리에게는 두가지 선택지가 있으니 이 부분을 기술 하자면 다음과 같다.

  • Windows
    • 어릴때부터 학습된 운영체제
    • 그래픽인터페이스(GUI)의 편리함
    • 제어판, 탐색기 등 대부분의 기본 프로그램에 익숙
  • MacOS
    • 애플에서 개발한 운영체제
    • 기본적으로 GUI는 이질적이지 않으나 후술할 Linux기반 파일 디렉토리 때문에 분석가들 환경 설정의 어려움
    • 프로그래밍 or 디자인 기능 특화

그래서 무엇을 쓸까? 를 고민한다면 거의 모든 대부분의 경우에는윈도우를 추천하는 편이다. 이유는 1. 따로 운영체제에 대한 학습이 필요하지 않으며 2. MS가 제공하는 3신기(Docs, Excel PPT) 활용도가 좋기 때문이다. 

반면 맥북이 갖는 장점은 1. 이쁘다 간지난다. 2. Linux 계열 컴퓨터 언어를 조금 이해할 수 있다.(강제로 학습하게 된다)3. 운영체제 관리가 잘되어서 적은 램으로도 잘 돌아간다는 점이다. 

사실 나는 위 장점/단점을 고른다기보다는 단 하나의 맥북의 단점으로 고르게 되었는데 그것은 맥북에서 편집한 파일의 윈도우에서 자-모음 분리현상 때문이다. 정말 사소하지만 메일로 일하는 나에겐 너무 프로페셔널 해보지 않아서 윈도우로 갈아타는 계기가 되었다. 물론 Google Drive 업로드 후 첨부 등 우회방법이 있지만 굳이 그걸 신경쓸만큼 맥북이 이득이 없다라고 판단했다. 

 

본인이 분석가면 대부분의 경우의 윈도우가 정답이다. 

 

2. 하드웨어 

✅ 컴퓨터 하드웨어 설명

 

예산이 되어있는 개인 구입일 때는 비용도 제한하게 되는데, 이때 고민하는 것이 하드웨어 사양이다. 사실 서버를 돌릴 때도 간단한 작업은 비싼 장비는 필요 없을 뿐더러 비용만 더 많이 나가기 때문에 적당한 걸 선택한다. 보통은 무료 tier에 가까운걸로..?

간단 정리하자면 CPU, RAM, 디스크가 있고 요즘은 딥러닝 혹은 그래픽 작업에 의해서 GPU까지 얘기하지만 서버를 대여할때는 딥러닝까지 한다면 빌려야겠지만 비용이 상당하기 때문에 개인 입장에서는 GPU까지 고민하면서 서버를 쓸 정도면 이미 이 부분은 잘 알거라 생각한다.

  • CPU(Central Proceesing Unit)은 중앙처리장치로 모든 연산을 담당
  • 메모리일시 기억을 담당
    • 데이터 분석 툴은 대부분 램에 데이터를 담기 떄문에 클수록 선호
    • 재부팅하면 날라감
    • 혹은 프로그램을 끄면 날라감(왜? 메모리는 모든 프로그램에서 써야하니까 방빼!)
  • 저장공간(HDD, SSD)는 영구 기억을 담당
    • 역시 클수록 좋습니다.
  • 그래픽카드는 부동소수점 연산을 담당
    • 쉽게 말하면 그래픽을 담당
    • 최근에는 딥러닝 수행에 아주아주 큰 역할
    • 대부분의 데이터분석은 그래픽카드는 필수 요건은 X

여기서 CPURAM을 묶어서 컴퓨터 자원이라고 명명한다. 대부분 분석가들은 최적화는 신경 잘 안쓰고 컴퓨팅 파워에 맡기나 별로 좋은습관은 아니다. 특히  대용량 데이터를 다룰때는 굉장히 중요해진다.

✅ 컴퓨터 사양 확인 방법

위 내용을 현실적으로 이해하려면 본인의 컴퓨터 사양을 확인해보면 될 것이다. 

윈도우의 경우는

  • 기본 사양: window 키 + R → dxidag 입력

  • 컴퓨터 자원확인: CTL + SHIFT + ESC

 

맥북의 경우는

  • 기본사양: 왼쪽 상단 애플마트 - 이 Mac에 관하여

  • 컴퓨터 자원 확인: Command + space -> 활성 상태 보기

 

3. Linux

GCP를 셋업하기로 했으면 제3의 운영체제 Linux에 대해서 알아야한다. 사실 모든 운영체제의 조상 UNIX으로부터 태어난 운영체제이기 때문에 우리가 알게 모르게 사용하는 컴퓨터 자원은 거의 Linux로 구동된다. 개인용 컴퓨터 PC가 아무래도 현실에 자주 마주하는 컴퓨터다 보니까 입문자들이 이런 부분을 모르는게 대부분이다. 

✅ Linux란 ?

 

Linux는 1991년 Linus Torvals가 Unix 운영체제 기반으로 개발한 무료소프트웨어 운영체제로 현재 전세계적으로 300여가지의 배포판이 존재하여, 사용자에 따라 결정할 수 있는 폭이 넓음 (ex 개인용컴퓨터, 모바일. 여러분들이 사용하는 PC 외에 대부분 SaaS 서비스가 리눅스 기반 (Colab도!) 배포판 분류로 회사에서 관리하는 레드햇, 우분투 커뮤니티 관리하는 데비안, 젠투, 페도라가 있다.

✅ Linux 용어 정리 

커널(Kerenel)은 운영체제의 핵심으로 메모리관리, 프로세스 관리, 장치 관리 등 컴퓨터의 모든 자원을 제어하는 유틸리티이다. 또한, 디렉토리(Directory)는 윈도우로 따지자면 파일 구조(탐색기)이며 파일 시스템에 의해 관리 되고 있다. 아무래도 리눅스를 처음 접할 때 파일 구조가 달라서 많이 혼동하곤 한다. 사실 윈도우에 파일시스템도 샅샅이 아는 사람은 드물 것...

경로별 간단 설명을 하자면

  • / : 파일 시스템의 가장 최상단 디렉토리(Root 디렉토리)
  • /bin: 리눅스의 기본적인 명령어가 저장된 디렉토리
  • /home: 일반 사용자의 홈 디렉토리(자주 접근)
  • /boot: 운영체제 구동시 부팅 설정 파일이 존재
  • /usr : 일반 사용자를 위한 프로그램 파일(윈도우의 Program files)
    • /usr/bin: 일반 사용자들이 사용가능한 명령어 파일이 존재하는 디렉토리
    • /usr/local: 새로운 프로그램이 설치되는 공간

이때 디렉토리 경로를 표현하는 방식은 2가지가 있다.

  • 절대경로
    • 이름 그대로 절대적인 경로
    • Root 부터 시작하는 경로를 지정하며 어느 파일에 넣든 정확한 경로를 전달함
    •  예시
      • (ex 경기도 관양시 관평로 OOO번길 OO, 101-202) → 어디서 찍든 동일한 집임
  • 상대 경로
    • 현재 내 위치 기반 상대 경로
    • . : 현재 디렉토리
    • .. : 상위 디렉토리
    • 예시
      • 우리집 윗층 → 우리집이 어디냐에 따라 윗층이 달라짐

✅ 쉘(Shell) 

쉘은 Linux 사용하기 위한 인터페이스이며 기본적으로 키보드만 사용 가능하다. 마우스와 같은 UI가 익숙한 사람들 여기서 숨이 턱막힌다. 쉘은 사용자가 입력한 명령어를 실행하여 다른 프로그램이나 커널로 전송하는 기능을 하는 유틸리티이며, 사용자와 커널의 중간다리로 리눅스는 Bash 를 기본으로 사용한다. 분석가 기준으로 대표적인 명령어로 pip(파이썬 패키지 관리자)가 있다. Python 패키지를 설치하는 리눅스 명령어이자 유틸리티 이름이 pip인 것이다. 윈도우에서는 명령프롬프트(Command)가 있으며 명령어는 다르다. 반면 Linux Shell 명령어와 유사한 Powershell 이 기본으로 탑재되어 있다. 

맥의 Shell인 terminal

리눅스에서 자주 쓰는 단축키 & 명령어

  • 화살표 위아래: 이전 실행 명령어 확인
  • Tab키: 자동완성
  • top : 현재 리소스 확인하기
    • htop : 더 이쁘게 리소스 확인하기
    • 단 htop은 기본프로그램이 아니기 때문에 설치해줘야합니다.
    • sudo apt install htop : sudo(강제로) apt(리눅스 패키지 관리자), insatll(설치), htop(프로그램)
  • nano {텍스트파일} : Linux에서의 파일 편집기(a.k.a 메모장 기능)
  • pwd: print working directory, 현재 경로를 보여주기
  • which {프로그램}: 프로그램 위치 출력
    • ex which python3
  • ls : list, 현재 디렉토리 파일보기
    • ls -l : 상세 정보 포함하여 디렉토리 파일 보기(옵션을 넣을 수 있음)
  • cd .. : 현재 위치의 상위 경로로 이동하기
    • cd {절대경로}: 절대 경로로 이동하기
    • cd ~ : 기본 경로로 이동하기
  • rm {디렉토리명}: 비어있는 디렉토리 삭제하기
    • rm -rf {디렉토리명} : 디렉토리 강제 삭제하기(주의!)
  • cat {파일명} : 파일의 내용을 출력합니다.
  • grep {문자} {파일명}: 파일내에서 문자를 검색합니다.

✅ 리눅스 특징

  • 파란색 글자: 디렉토리(폴더)
  • 흰색 글자: 파일명
  • (.)으로 시작하는 디렉토리/파일 : 숨겨진 파일로서 ls -a로 확인 가능

회사 다니면서 알음알음 알아왔던 지식이여서 나름 다들 공통적으로 아는 내용이라고 생각했는데 생각보다 정리해보니 알려줄 내용이 꽤 많다. 암묵지의 형태는 생각보다 방대하고 정리할 가치가 있는 것 같다.  다음 글로는 GCP을 세팅하고 Crontab을 이용해 데이터 적재를 자동화하는  글을 작성할 예정이다. GoGo