개발 환경과 개발 도구의 분류 및 용도


    개발 환경과 개발 도구들의 개념에 대해 알아봤습니다. 이번 포스팅에서는 개발 환경과 개발 도구들을 분류하고 어디에 쓰이는지 살펴보겠습니다.

    개발환경


    개발 환경 / 개발 도구


    OS (운영체제)

    OS는 하드웨어 자원(CPU, 메모리, 저장소)을 관리하며 모든 소프트웨어의 기반이 됩니다. 플랫폼과의 결정적 차이는 "하드웨어 자원 관리"에 있습니다.
    • Windows - 가장 널리 사용되는 PC 운영체제
    • macOS - 애플이 개발한 운영체제
    • Linux - 오픈소스 운영체제로 서버, 개발 환경에서 많이 사용
    • Unix - 안정성과 보안성이 뛰어남 대형 서버 및 기업 환경에서 사용

    Platform (플랫폼)

    플랫폼은 응용 프로그램이 동작하는 완성된 환경입니다. 운영체제, 라이브러리, 엔진을 모두 포함한 하나의 독립 시스템으로 볼 수 있습니다.
    • .NET - XML과 SOAP 기반 통합 웹 서비스 플랫폼. 마이크로소프트가 제공하는 개발 생태계
    • Kubernetes (쿠버네티스) - 리눅스 컨테이너 작업을 자동화하는 오픈소스 플랫폼. 대규모 마이크로서비스 운영에 필수

    IDE (통합개발환경)

    IDE는 편집기, 디버거, 컴파일러, 코드 자동완성, 언어 지원, 플러그인 등 개발에 필요한 모든 도구를 하나로 묶은 환경입니다.
    • Android Studio - Google 공식 안드로이드 IDE. IntelliJ IDEA 기반으로 2014년 출시. 안드로이드 개발 표준 환경
    • AWS Cloud9 IDE - 클라우드 기반 IDE. 설치 불필요, 브라우저에서 Python·PHP 등 개발 가능
    • Eclipse - 자바 기반 오픈소스 IDE. 다양한 플러그인 생태계를 갖추고 있으며 Java 개발에 주로 사용
    • IntelliJ IDEA - 2001년 출시. 자바 생태계에서 가장 강력한 IDE. 무료 버전(CE)은 웹 개발에 일부 제한
    • JRE(Java SE Runtime Environment) - 자바 실행 환경. 자바 프로그램을 시스템에서 실행하기 위한 것.
    • NetBeans - 자바 기반 자바, 자바스크립트, PHP, C/C++ 등을 개발하기 위한 통합개발환경
    • PhpStorm - PHP 전용 IDE 양대 산맥. PhpStorm은 JetBrains 제품으로 현재 가장 널리 쓰임
    • RE : 실행환경
    • RubyMine - 주로 Ruby를 지원하는 웹 개발 중심 개발 환경
    • Xcode - Apple 공식 개발 툴. Swift 3 이상은 8.3버전 이상 필요. iOS 앱 배포의 필수 도구
    • Vagrant Ruby on Rails - 윈도우 루비 개발 환경 구축
    • Visual Studio - MS의 대형 통합 개발 환경. C#·.Net 개발의 표준이며 Windows 앱 개발에 특히 강함
    • Visual Studio Code - 2015년 출시된 무료 오픈소스 에디터. 확장성과 속도로 현재 가장 인기 있는 개발 도구
    • Zend Studio - 웹과 모바일 개발에서 PHP 개발자를 지원하는 PHP IDE 입니다.

    Engine (엔진)

    엔진은 특정 분야의 기능을 모두 제공하는 고도화된 라이브러리입니다. 게임 엔진이 대표적으로, 렌더링·물리·오디오 등 복잡한 기능을 통합 제공합니다.
    • Cocos - 2D 게임 개발에 특화된 오픈소스 엔진. 모바일 게임 시장에서 특히 많이 사용
    • Mono - 다양한 OS에서 .Net 기반 개발을 가능케 하는 크로스플랫폼 도구. C# 및 CLI 기반
    • Template_ (템플릿 언더바) - MVC 패턴을 쉽게 적용할 수 있게 해주는 템플릿 엔진. 프로젝트 구조 유지에 유리
    • Unity Mono - Mono 엔진 위에서 동작하는 크로스플랫폼 게임 엔진. C# 사용. 단, .Net 최신 기술 반영이 느린 한계

    Framework (프레임워크)

    단순히 함수 모음인 라이브러리와 달리, 프레임워크는 함수 간의 연결 방식과 사용 규칙, 그리고 전체 아키텍처까지 포함합니다.
    • Backbone.js - MVC 구조를 JavaScript에 도입한 경량 프레임워크. 현재는 React·Vue로 대체 추세
    • Bootstrap - 웹 사이트나 응용 프로그램을 작성하기 위해 사용하는 무료 소프트웨어 도구 모음
    • Flutter (플러터) - AOS·iOS 동시 지원 크로스 플랫폼 모바일 앱 개발 프레임워크. Google이 개발한 Dart 기반
    • J2SE - 자바 플랫폼 스탠더드 에디션. JVM 규격과 API를 포함한 표준 자바 개발 환경
    • JDBC - 자바 프로그램이 DB와 연결해 데이터를 주고받게 해주는 표준 API. MyBatis의 기반
    • Spring - Java 플랫폼용 오픈소스 프레임워크. 동적 웹사이트 및 엔터프라이즈 애플리케이션 개발의 표준
    • MyBatis (마이바티스) - JDBC를 더 편리하게 사용하도록 도와주는 DB 매핑 프레임워크. SQL 직접 제어 가능
    • Xamarin - C#과 .NET Framework를 리눅스에서도 쓸 수 있게 해주는 프레임워크

    Library (라이브러리)

    특정 기능을 구현한 함수들을 재사용 가능하도록 묶어 놓은 것입니다. 프레임워크와의 차이는 "누가 누구를 호출하느냐"입니다. 라이브러리는 내가 필요할 때 꺼내 쓰지만, 프레임워크는 규칙에 따라 나의 코드를 호출합니다.
    • jQuery - 모든 브라우저 호환 클라이언트 JS 라이브러리. 현재는 React·Vue에 자리를 내줬지만 레거시 코드에 여전히 많음
    • OpenSSL - TLS/SSL 오픈소스 구현 보안 라이브러리. 웹 서버의 HTTPS 구현에 핵심적으로 사용
    • OmniSharp - Sublime Text, Atom, Emacs 등 다양한 에디터에서 C# 코딩 및 인텔리센스(자동완성)를 지원하는 오픈소스
    • React - 사용자 인터페이스 빌드용 JavaScript 라이브러리. Meta(구 Facebook) 개발. 현재 프론트엔드 최강자
    • RxJava - 함수형 프로그래밍 기반 리액티브(반응형) Java 라이브러리. 비동기 처리에 강함

    SDK (소프트웨어 개발 키트)

    SDK는 특정 플랫폼에서 앱을 만들 수 있도록 필요한 도구, 라이브러리, 문서, 샘플 코드를 한 번에 묶은 패키지입니다.
    • Android SDK - 안드로이드 앱 개발의 핵심 키트. Android Studio에 포함되어 있으며 ADB, 에뮬레이터 등 포함
    • iOS SDK - Apple의 iOS 앱 개발 키트. Xcode에 포함. UIKit, SwiftUI 등 핵심 프레임워크 제공
    • JDK - JRE(자바 실행환경) + SDK(개발 도구). Java 개발자라면 반드시 설치해야 하는 기본 패키지
    • NDK - Android에서 C/C++ 코드를 실행할 수 있게 해주는 Native 개발 키트. 기존 C 코드 재활용 가능

    Interface (인터페이스) 

    시스템과 사용자, 또는 시스템과 시스템이 서로 소통하는 방식을 정의한 규격입니다.
    • CLI - 명령줄 인터페이스. 텍스트 명령으로 시스템을 제어하는 방식. Git, Docker, npm 등 대부분의 개발 도구가 CLI 지원
    • JNI - C/C++로 작성된 코드를 Java에서 호출할 수 있게 하는 인터페이스. 성능이 중요한 부분에 활용
    • Win32 API - MS Windows 32비트 운영체제용 API. Windows 응용 프로그램 개발의 기반

    API

    운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식
    • REST API - http 프로토콜의 장점을 살릴 수 있는 네트워크 기반 아키텍쳐
    • Web API - REST API 제약조건으로 지원이 어려울 때 외부 소스에서 데이터 등의 자원을 가져오도록 요청할 수 있는 API

    Plugin (플러그인) 

    플러그인은 기존 소프트웨어에 특정 기능을 추가하는 요소로, 필요할 때만 붙였다 뗄 수 있어 빌드 시간과 파일 크기를 줄여줍니다.

    댓글 쓰기

    0 댓글