반응형

목차

  1. 데몬(Linux daemon)
  2. 바이너리
  3. 소프트웨어 아키텍처
  4. 어플리케이션
  5. API
  6. 프로토콜
  7. 서버
  8. 클라이언트
  9. 클러스터
  10. 개발자 vs 엔지니어

제가 2월 말에 막 IT에 입문을 시작하며 기본적인 용어들이 익숙하지 않아 많은 어려움이 있었습니다. 그래서 기본적인 용어들에 대해 정리해 보았고, 이 진로를 선택하니 "너는 개발자가 하고 싶어, 엔지니어가 하고 싶어?"라는 질문이 들어왔는데, 대답을 못했던 경험이 있어 간단히 조사하게 되었습니다. 이 글이 여러분께 도움이 되었으면 좋겠네요.


용어 정리
  1. 데몬(Linux daemon)
    리눅스 데몬(Linux daemon)은 백그라운드에서 실행되며, 특정 기능을 수행하는 프로세스입니다. 일반적으로 시스템 부팅 시 자동으로 실행되어, 사용자가 로그인하지 않은 상태에서도 시스템이 정상적으로 작동하도록 합니다. 데몬은 일반적으로 시스템의 핵심 기능과 밀접하게 관련되어 있으며, 파일 시스템, 네트워크, 웹 서버 등과 같은 서비스를 제공하는 역할을 합니다. 또한, 시스템 모니터링, 백업, 보안, 로깅 등과 같은 백그라운드 작업을 수행하기도 합니다. 데몬은 사용자가 직접 실행하거나 제어할 수 없으며, 일반적으로 시스템 관리자만이 제어할 수 있습니다.

  2. 바이너리
    리눅스 바이너리는 리눅스 운영 체제에서 실행되는 프로그램을 의미합니다. 이는 소스 코드를 컴파일한 결과물로, 일반적으로 실행 파일 또는 바이너리 파일이라고도 합니다. 이진 형식으로 작성되어 있으며, 실행 파일로 컴파일된 후 바로 사용할 수 있습니다. 리눅스 바이너리는 특정 CPU 아키텍처와 운영 체제 버전에 대해 컴파일되어야 하며, 다른 시스템에서 사용하려면 재컴파일이 필요할 수 있습니다. 이진 파일은 리눅스 시스템에서 사용되는 많은 유틸리티 및 프로그램의 핵심입니다.

  3. 소프트웨어 아키텍처
    소프트웨어 아키텍처(software architecture)는 소프트웨어 시스템을 구성하는 구성요소와 구성요소 간의 관계, 그리고 구성요소의 행위와 특성을 정의하는 개념적인 구조입니다. 즉, 소프트웨어 시스템을 설계하고 개발할 때 시스템의 구조, 구성요소의 역할과 책임, 그리고 구성요소 간의 상호작용을 정의하는 것을 말합니다. 이를 통해 소프트웨어 시스템을 구조화하고, 개발과 유지보수를 용이하게 할 수 있습니다.

  4. 어플리케이션
    어플리케이션은 컴퓨터나 모바일 디바이스 등에서 실행되는 소프트웨어 프로그램을 일컫는 용어입니다. 일반적으로 업무나 개인적인 용도로 사용되며, 사용자들이 컴퓨터나 모바일 디바이스에서 원하는 작업을 수행하도록 해줍니다. 예를 들어, 워드 프로세서나 게임 등이 어플리케이션의 일종입니다. 이러한 어플리케이션은 일반적으로 운영 체제에 종속되며, 사용자는 운영 체제에서 제공하는 인터페이스를 통해 어플리케이션을 실행하고 조작할 수 있습니다.

  5. API
    API란 응용 프로그램에서 데이터 및 서비스를 공유하기 위한 인터페이스입니다. 즉, 응용 프로그램 간에 서로 통신할 수 있는 방법을 제공합니다. API를 사용하면 데이터와 기능을 다른 응용 프로그램에서 사용할 수 있으며, 이는 소프트웨어 개발을 더욱 효율적이고 생산적으로 만들어 줍니다. API는 주로 웹 서비스에서 사용되며, 일반적으로 REST, SOAP 및 XML-RPC와 같은 프로토콜을 사용하여 구현됩니다.

  6. 프로토콜
    프로토콜은 서로 다른 두 시스템이나 장치들이 통신을 하기 위한 약속된 규약이나 규칙을 의미합니다. 예를 들어, 인터넷에서 데이터를 주고받을 때 사용되는 TCP/IP 프로토콜은 데이터 전송에 대한 규칙과 약속들을 정해놓은 것입니다. 프로토콜은 데이터를 주고받는 방법뿐만 아니라 데이터의 형식, 전송 속도, 보안 등 다양한 측면에서 규정될 수 있습니다. 따라서 프로토콜은 컴퓨터 네트워크나 통신 분야에서 중요한 역할을 합니다.

  7. 서버
    서버란 네트워크 상에서 다른 컴퓨터나 장치들이 네트워크를 통해 접근할 수 있는 중앙 컴퓨터 혹은 컴퓨터 시스템을 말합니다. 일반적으로 서버는 다수의 클라이언트들에 대해 처리하고, 파일, 데이터, 애플리케이션 등을 저장하고 관리합니다. 서버는 네트워크 환경에서 중앙 집중식으로 관리할 수 있는 구성 요소 중 하나입니다.

  8. 클라이언트
    클라이언트란 네트워크에서 다른 컴퓨터나 서버와 통신하여 그 서비스나 자원을 요청하고 사용하는 컴퓨터 또는 프로그램을 말합니다. 클라이언트는 서버에 접속하여 서버가 제공하는 서비스를 사용할 수 있습니다. 예를 들어, 인터넷을 사용할 때 웹 브라우저를 클라이언트로 사용하여 웹 사이트를 요청하고, 서버에서 제공하는 정보를 받아와 보는 것이 그 예입니다.

  9. 클러스터
    클러스터는 여러 대의 컴퓨터를 하나로 묶어서 하나의 컴퓨팅 자원처럼 사용할 수 있도록 만든 컴퓨터 시스템입니다. 이를 통해 컴퓨터 자원을 보다 효율적으로 활용하고, 안정적인 서비스 제공이 가능해집니다. 클러스터는 하드웨어나 소프트웨어적으로 연결되어 있으며, 여러 대의 서버를 사용하여 더 높은 가용성과 성능을 제공할 수 있습니다. 또한, 클러스터링은 대규모 데이터 처리나 고성능 컴퓨팅 등에 많이 사용됩니다.

개발자 vs 엔지니어

개발자는 주로 소프트웨어를 만드는데 집중하며, 해당 소프트웨어의 설계와 개발, 테스트 및 유지보수를 수행합니다. 이러한 개발자들은 프로그래밍 언어나 기술에 대한 전문 지식을 가지고 있으며, 적극적으로 새로운 기술과 툴을 탐색하고 적용하는 것을 선호합니다. 또한 개발자들은 소프트웨어의 기능과 디자인 측면에 관심을 가지고 있으며, 사용자가 소프트웨어를 사용하는 방법을 고려합니다.

반면에 엔지니어는 보다 넓은 시야에서 시스템 전체를 이해하고, 소프트웨어 시스템과 하드웨어 시스템 모두를 다룹니다. 이러한 엔지니어들은 주로 시스템의 아키텍처와 인프라스트럭처를 설계하며, 운영체제, 네트워크, 서버, 스토리지, 보안 등의 기술 분야에 대한 지식이 필요합니다. 엔지니어들은 이러한 기술들을 사용하여 하드웨어와 소프트웨어 시스템을 최적화하고, 시스템의 안정성, 보안성, 확장성 등을 유지보수합니다. 엔지니어들은 보통 비즈니스 요구사항을 고려하고, 사용자들이 기술적인 문제 없이 시스템을 사용할 수 있도록 지원합니다.

 

반응형