Platforms and Tools
이 게시물은 초급 웹 개발자를위한 일련의 게시물 중 일부입니다. 또한 " Part 1 : Frontend ", " Part 2 : Backend "및 " Part 4 : Cloud Deployment "도 확인하십시오.
웹 개발 학습에 관한 우리의 연설을 계속하면서, 우리는 특정 프로그래밍 언어에서 벗어나 웹 애플리케이션이 실행되고 개발되는 환경에 집중할 것입니다. 이 섹션에서는 다음과 같은 몇 가지 큰 항목을 다룹니다.
모든 개발자가 익숙해야 할 기본 개발 도구.
차트의 색상 코딩은 매우 간단합니다. 노란색 (�) 줄은 배워야 할 기본 사항을 표시하고 주황색 (�)은 나중에 떠날 수있는 고급 주제를 나타내며 회색 (�)은 올 수있는 틈새 주제입니다. 어떤 경우에 편리합니다.
초기부터 개발 도구에 익숙해 졌으므로 코드 작성 및 응용 프로그램 디버깅을 신속하게 진행할 수 있습니다. 개발하고자하는 모든 플랫폼에는 해당 플랫폼을위한 많은 도구가 있지만 거의 모든 개발자가 사용하는 도구가 있습니다. 그들을 따라 가자.
코드 편집기는 모든 소프트웨어 개발자의 본거지입니다. 이것은 마술이 일어나는 곳입니다. 기본 코드 편집기는 코드 강조, 리팩토링 및 디버깅 기능과 같은 가장 필요한 기능 세트를 제공합니다. 또한 광범위한 통합 도구 및 기능을 갖춘 IDE (통합 개발 환경)라고하는 고급 편집기가 있습니다. 다음은 가장 많이 사용되는 코드 편집기입니다.
� 비주얼 스튜디오 코드는 마이크로 소프트가 만든 무료 크로스 플랫폼 코드 편집기입니다.
JavaScript, TypeScript, CSS 및 HTML에 대한 지원 기능이 내장되어 있으므로 다른 많은 언어를 지원할 수 있습니다.
VS 코드는 구문 강조, 코드 완성, 코드 생성을위한 코드 조각, 리팩터링 기능 및 기본 제공 터미널을 제공합니다.
또한 응용 프로그램의 버그를 해결하는 데 도움이되는 통합 디버거가 있습니다.
기능 세트가 상업용 IDE에서와 같이 폭이 넓지는 않지만 확실히 시작할 수 있습니다.
� JetBrains IDEs - JetBrains가 다른 플랫폼 용으로 개발 한 IDE 제품군입니다. 있다 WebStorm 프론트 엔드 개발을위한, 인 IntelliJ의 IDEA Java 및 대한 PhpStorm 등 PHP 및 해당 언어, 프레임 워크 및 지원 도구에서 이러한 초점의 각. 버전 제어 시스템, 로컬 변경 내역 또는 실행중인 작업과의 통합과 같은보다 유용한 기능을 보완하면 매우 효율적인 작업 환경을 얻을 수 있습니다. 이 제품들은 무료이지만 IntelliJ Community Edition 은 무료로 사용할 수 있습니다.
� Visual Studio IDE
- Microsoft에서 개발 한 상용 IDE입니다.
3 가지 오퍼링이 제공됩니다 : 무료 커뮤니티 에디션, 전문 및 엔터프라이즈.
광범위한 프로그래밍 언어와 응용 프로그램 개발 및 디버깅을위한 다양한 도구를 지원합니다.
또한 Azure 또는 Azure DevOps와 같은 다른 Microsoft 제품 및 서비스와의 유용한 통합을 제공합니다.
C # 및 TypeScript는 VS의 일급 시민입니다.
버전 제어 시스템 (VCS)은 모든 개발 프로세스에서 핵심적인 역할을합니다. VCS를 사용하면 모든 코드 변경 기록을 원격 저장소에 저장할 수 있습니다. 리포지토리를 탐색하여 변경 내역을 검토하고, 다른 버전을 비교하거나 이전 버전으로 롤백 할 수 있습니다. 여러 개발자가 변경 사항을 동일한 저장소로 푸시하여 프로젝트에서 공동 작업을 수행하면서 로컬 코드베이스를 동기화 할 수 있습니다. 요즘 VCS는 코드베이스의 궁극적 인 소스로 사용되며 현대 개발 프로세스의 중추입니다.
VCS 시스템은 명령 행 인터페이스를 통해 사용할 수 있지만, 다른 코드 편집기와의 통합은 물론 다른 GUI 클라이언트도 사용할 수 있습니다.
두 가지 인기있는 버전 제어 시스템이 있습니다.
� Git 이 가장 인기있는 VCS입니다. 분산 시스템입니다. 즉, 사용자가 저장소를 복사하면 프로젝트의 전체 기록을 가져와 오프라인으로 작업 할 수 있습니다. 간혹 사용자가 변경 내용을 중앙 원격 리포지토리에 게시하고 다른 사용자가 변경 한 내용을 다운로드해야하는 경우가 있습니다. Git 저장소를 호스트하는 많은 서비스가 있습니다. 가장 인기있는 것은 GitHub와 BitBucket 입니다.
� Subversion (SVN) 은 다른 버전 제어 시스템입니다.
Git과 달리 SVN을 사용하면 하나의 브랜치 만 체크 아웃 할 수 있습니다.
다른 브랜치로 전환하려면 원격 저장소에서 해당 브랜치를 다운로드해야합니다.
업계에서 아직도 사용 되긴하지만, Git은 훨씬 더 널리 사용되고 있으며 그 주위에 훨씬 많은 도구와 서비스가 있습니다.
개발자는 OS X 또는 Linux에서 터미널을 사용하거나 Windows에서 명령 프롬프트를 사용하는 것이 편안하다고 중요합니다. GUI에서 대부분의 작업을 할 수 있다고해도 명령 줄 인터페이스 만 제공하는 유용한 도구가 많이 있습니다. 또한 GUI가없는 원격 기계로 작업하는 경우도 있습니다. 파일 시스템 탐색, 파일 작성 또는 제거, 내용보기 및 CLI 도구 실행과 같은 기본적인 작업을 수행 할 수 있는지 확인하십시오.
명령 셸 사용에 익숙해지면 배포, 인프라 프로비저닝 또는 개발 작업 실행과 같은 일상적인 작업을 자동화하여 많은 시간을 절약 할 수 있습니다. 운영 체제에 따라 Bash를 사용하여 Linux 및 OSX 용으로 작성하거나 배치 파일 또는 PowerShell을 사용하여 Windows 용으로 작성하는 방법을 배워야합니다. 흔히 다른 소프트웨어에는이를 사용하기위한 일련의 스크립트가 제공되기 때문에 기본 명령을 읽고 이해할 수 있으면 도움이됩니다.
Linux는 Linux 커널 기반의 무료 오픈 소스 운영 체제 제품군입니다. 데비안, CentOS, 민트, 오픈 수세 (openSUSE)와 같은 다양한 리눅스 배포판이 있습니다. 임베디드 전자 제품과 가전 제품부터 스마트 폰과 서버에 이르기까지 모든 종류의 장치에서 실행되는 Linux 배포판을 찾을 수 있습니다. 리눅스는 여러 가지면에서 Windows와 다르므로 Windows 배경에서 온 경우 파일 시스템 구조, 액세스 제어 작동 방식, 소프트웨어 설치 방법 등과 같은 기본 사항을 알아야합니다.
웹 개발자에게는 웹 서버를 운영하는 데 매우 일반적으로 사용되는 운영 체제이므로 Linux에 익숙해 져야합니다. 리눅스에는 많은 책과 학습 자료가 있지만, 실제로 그것을 알기 위해서는 그것을 사용하기 시작해야합니다. Linux를 기본 또는 보조 OS로 설치하여 일상적인 작업에 사용할 수 있습니다. 일단 시작하면 길을 따라 세부 사항을 파악할 수 있습니다.
우리가 웹 개발에 대해 이야기하고 있기 때문에 네트워크는 우리 삶에서 중요한 역할을 할 것입니다. 응용 프로그램의 사용자는 케이블이나 무선 네트워크를 통해 인터넷을 통해 액세스합니다. 응용 프로그램 자체는 네트워크를 통해 다른 서비스와 통신 할 수 있습니다. 이것이 어떻게 작동하는지 이해하려면 기본적인 네트워킹 기술을 익히는 것이 중요합니다.
프로토콜은 응용 프로그램이 서로 어떻게 통신해야하는지에 대한 일련의 규칙입니다. 연결을 초기화하는 방법, 전송 된 메시지의 순서 및 형식을 설명합니다. 웹 응용 프로그램에서 자주 사용되는 몇 가지 중요한 프로토콜이 있습니다.
� 하이퍼 텍스트 전송 프로토콜 (HTTP)
월드 와이드 웹의 기본 프로토콜이며, 브라우저 나 다른 클라이언트가 웹 서버에서 리소스를 요청하는 방법을 정의합니다.
브라우저에 웹 사이트의 URL을 입력하면 실제로 HTML, CSS, 스크립트 및 기타 자산을로드하기 위해 하나 또는 여러 개의 HTTP 요청을 서버에 전송합니다.
HTTPS (Hypertext Transfer Protocol Secure)는 안전한 통신을 위해 전송 된 정보를 암호화합니다.
� HTTP / 2 는 웹 응용 프로그램의 성능을 향상시키는 것을 목표로하는 HTTP의 주요 업데이트입니다.
그것은 멀티플렉싱을 가능하게합니다. 즉, 동시에 열려있는 단일 요청에 대해 서로 다른 컨텐트를 전송할 수 있습니다.
프로토콜은 헤더 필드를 압축하여 암호화를 시행하고 프로토콜 오버 헤드를 최소화합니다.
� 전송 제어 프로토콜 (Transmission Control Protocol, TCP) 은 서로 다른 응용 프로그램간에 패키지를 신뢰할 수 있고 오류없이 사용할 수 있도록하는 전송 계층 프로토콜입니다.
HTTPS 및 HTTPS는 TCP 위에 작동합니다.
� 인터넷 프로토콜 (IP) 은 한 호스트에서 다른 호스트로 패키지를 라우팅하는 방법을 정의하는 인터넷 계층 프로토콜입니다.
TCP는 라우팅에 IP를 사용합니다.
현재 사용중인 프로토콜에는 IPv4와 IPv6의 두 가지 주요 버전이 있습니다.
DNS (Domain Name System)는 사람이 읽을 수있는 인터넷 리소스 이름을 해당 IP 주소로 변환합니다. 도메인을 주소로 해석하는 작업은 복잡한 과정이므로 응용 프로그램을 올바르게 구성하기 위해 작동 방식에 대한 기본적인 지식이 필요합니다.
웹 서버는 다른 프로토콜을 사용하여 들어오는 연결을 수신하고 요청 된 컨텐트로 응답하는 것을 담당하는 특별한 유형의 소프트웨어입니다. 웹 서버는 HTML, JavaScript 파일 또는 이미지와 같은 정적 파일을 제공하고, 다른 언어로 작성된 동적 스크립트를 실행하거나 별도의 응용 프로그램으로 실행되는 프로세스의 프록시 역할을 수행 할 수 있습니다.
웹 서버는 또한 압축, 캐싱 및로드 균형 조정을 사용하여 응용 프로그램의 성능을 향상시키는 데 중요한 역할을합니다.
이것들은 좀 더 대중적인 웹 서버입니다.
� Apache HTTP Server
는 Apache Software Foundation에서 개발 한 무료 오픈 소스 웹 서버입니다.
정적 컨텐츠를 제공하도록 구성 할 수있는 빠르고 강력한 웹 서버이지만 PHP, Python 등으로 작성된 스크립트를 실행하는 데 자주 사용됩니다.
� 마이크로 소프트 IIS는
Windows Server 운영 체제에서 사용할 수 있습니다 Microsoft에서 범용 웹 서버이다.
IIS는 Microsoft 기술 스택을 사용하는 회사들에게 인기있는 선택입니다.
�NGINX 는 대개 고성능 정적 컨텐츠 서버 또는 동적 어플리케이션 용 프록시로 사용되는 웹 서버입니다.
아파치와 달리 동적 인 콘텐츠는 독자적으로 제공 할 수 없지만 때때로 더 나은 성능을 얻을 수 있습니다.
NGINX는 무료이며 오픈 소스 인 웹 서버이지만 NGINX Plus라고하는 고급 유료 버전을 제공합니다.
때로는 응용 프로그램이나 웹 서버가 어떤 이유로 사용할 수없는 상황에 처할 수도 있습니다. 이러한 경우를 디버깅하는 것이 까다로울 수는 있지만 중단에 대한 많은 이유가있을 수 있지만 상황을 진단하고 문제의 원인을 파악하는 데 사용할 수있는 몇 가지 도구가 있습니다.
� Ping 은 특정 IP 주소에 연결할 수 있는지 확인하는 데 사용할 수있는 교차 플랫폼 CLI 유틸리티입니다. 또한 패키지 손실과 연결 상태에 대한 아이디어를 얻을 수있는 왕복 시간을 측정합니다.
� Ncat은 네트워킹 도구의 스위스 군용 칼 인 강력한 Linux CLI 도구로, 다른 프로토콜을 사용하여 메시지를 보내고, 열린 포트를 검색하고, 터널을 만드는 등의 작업을 수행 할 수 있습니다.
가상화는 리소스 관리 방식을 근본적으로 변화시킨 컴퓨팅의 중요한 개념입니다. 가상화를 사용하여 하나의 하드웨어에 별도의 서버, 워크 스테이션, 파일, 네트워크 또는 디스크를 만들 수 있습니다. 사용자에게는 이러한 모든 리소스가 실제 물리적 리소스로 표시되지만 하드웨어를 기반으로 추상화 된 소프트웨어를 사용하여 실제로 프로비저닝됩니다.
가상화를위한 가장 빈번한 사용 사례 중 하나는 하나의 실제 컴퓨터에서 다른 소프트웨어 또는 다른 운영 체제를 실행해야한다는 것입니다. 이를 가상 머신이라고하며 자체 메모리, 디스크 공간 및 소프트웨어가 설치된 완전히 격리 된 환경을 제공합니다. 가상 머신은 워크 스테이션에서 다른 운영 체제를 실행하기위한 개발 목적으로 사용될 수 있지만 더 중요한 것은 서로 간섭하지 않고 단일 하드웨어 서버에서 여러 응용 프로그램을 실행하는 것입니다. 가상 컴퓨터를 만들고 실행하는 소프트웨어를 하이퍼 바이저라고합니다.
� 버추얼 박스는 현재 오라클에 의해 개발되는 무료 오픈 소스 크로스 플랫폼 하이퍼 바이저이다.
이 도구는 가상 컴퓨터 생성 및 실행은 물론 폴더 또는 클립 보드와 같은 리소스를 호스트 시스템과 공유하는 것을 지원합니다.
� Mac 용 패러랠 데스크톱은 원활 Mac에서 Windows 응용 프로그램을 실행할 수 있습니다.
Parallels는 Mac에서 Windows 개발 환경을 설정하거나 Windows에서 무언가를 테스트해야하는 경우에 편리합니다.
컨테이너는 소프트웨어를 실행하는 다른 가상화 메커니즘이지만 가상 시스템과 달리 컨테이너는 완전한 운영 체제를 실행하지 않지만 동일한 컨테이너 런타임을 공유합니다. 이렇게하면 훨씬 가볍고 빠르게 시작할 수 있습니다. 즉 많은 리소스를 낭비하지 않고 단일 시스템에서 많은 컨테이너를 실행할 수 있습니다. 컨테이너의 모범 사례는 백엔드 서비스, 웹 서버 또는 데이터베이스와 같이 애플리케이션의 각 부분을 다른 애플리케이션과 별도로 실행하여 더욱 세분화 된 제어 및 격리를 제공하는 것입니다.
� 도커는 당신이 도커 파일을 사용하여 응용 프로그램을 실행하는 데 필요한 컨테이너 이미지를 만들 수 있습니다 도커으로 도커, Inc.에서 개발 된 가장 인기있는 크로스 플랫폼 컨테이너 런타임이다.
그런 다음이 이미지를 다른 사람이 실행하거나 웹 서버에 배포하기 위해 레지스트리에 게시 할 수 있습니다.
Docker를 사용하면 깨끗하고 사전 정의 된 일회용 환경을 쉽게 생성하여 응용 프로그램을 개발 한 다음 동일한 이미지를 사용하여 실제 환경에서 실행할 수 있습니다.
이미지와 실행중인 컨테이너를 관리하는 데 사용할 수있는 다양한 도구와 컨테이너 화 된 응용 프로그램을 호스팅 할 수있는 서비스가 있습니다.
� Kubernetes는 컴퓨터 클러스터에 컨테이너를 배포하기위한 오픈 소스 플랫폼입니다.
이를 통해 컨테이너 이미지 및 구성 매개 변수를 기반으로 서비스를 정의하고 가상 스토리지 또는 네트워크 리소스를 생성 할 수 있습니다.
또한 스케일링,로드 밸런싱 및 로깅과 같은 운영 기능을 제공합니다.
자체 컴퓨터에서 Kubernetes를 호스팅하거나 클라우드 기반 서비스 중 하나를 사용할 수 있습니다.
현재 급속도로 진화하고있는 매우 유연하고 강력한 플랫폼입니다.
이 장에서는 주로 다양한 플랫폼의 개발자에게 유용한 도구와 플랫폼에 중점을 두었습니다. 그러나 특정 플랫폼에 대한 작업을 시작하면 특정 상황에서 유용 할 수있는 많은 새로운 도구를 발견하게됩니다.
다음 번에는 다양한 클라우드 배포 옵션을 살펴보고 응용 프로그램 배포에 적합한 옵션을 선택할 수 있습니다.