Beginner’s Web Development Guide:Backend
원본 URL :https://medium.com/devtrailsio/beginners-web-development-guide-part-2-backend-fd466212dbfc
이 게시물은 초급 웹 개발자를위한 일련의 게시물 중 일부입니다. 또한 " 1 부 : 프론트 엔드 ", " 3 부 : 플랫폼 및 도구 "및 " 4 부 : 클라우드 배치 "를 확인하십시오.
오늘 우리는 웹 개발에 대한 소개를 계속합니다. 이전 글 에서는 프론트 엔드 개발에 대해 살펴 보았고, 오늘은 백엔드 개발에 대해 이야기 할 것입니다.
서버 측 개발이라고도하는 백엔드 개발은 서버에서 발생하는 프로세스를 개발하는 것으로 일반적으로 사용자가 볼 수 없습니다. 웹 UI는 백엔드에 요청을 보내 HTML을 렌더링하거나, 데이터베이스에 사용자 입력을 저장하거나, 사용자를 인증하거나, 이메일을 보내거나, 지불 요청을 처리하도록 요청할 수 있습니다. 응용 프로그램의이 부분은 사용자에게 투명하지만 결코 중요하지 않습니다. 이것은 귀하의 응용 프로그램의 심장과 두뇌입니다.
차트의 색상 코딩은 매우 간단합니다. 노란색 선은 배워야 할 기본 사항을 표시하고 오렌지는 나중에 사용할 수있는 고급 주제를 나타내며 회색은 특수 프로젝트에 유용 할 수있는 틈새 주제입니다.
프론트 엔드 개발과 비교하여 백엔드에서 프로그래밍 언어를 선택하는 것이 훨씬 더 넓으며 유스 케이스와 환경에 따라 솔루션을 자유롭게 선택할 수 있습니다.
프로그래밍 언어를 분류하는 데는 여러 가지 방법이 있으며 스크립팅 및 컴파일 된 언어로 그룹화하기 위해 임의로 결정했습니다. 그러나 이것이 완전히 정확하지 않다는 것을 인정해야합니다. 스크립팅 언어 중 일부는 실제로 컴파일되며 컴파일 된 일부 언어는 인터프리터를 가질 수 있습니다. 그러나이 부서는 분석을 시작하기에 편리한 출발점이됩니다.
실행 전에 명시 적으로 컴파일 할 필요가없는 언어를 스크립팅 언어 또는 해석 된 언어라고합니다. 컴파일 된 언어와 달리 이진 실행 파일을 생성하지 않습니다. 오히려 코드는 즉시 평가되고 실행됩니다. 컴파일러에서 요구하는 엄격한 방식으로 코드를 작성할 필요가 없으므로 스크립팅 언어를 사용하기가 더 쉽습니다. 그러나 컴파일 중에 발견 된 오류는 런타임 중에 만 나타납니다.
가장 많이 사용되는 스크립팅 언어는 다음과 같습니다.
Node.js 서버 측 런타임을 사용하는 JavaScript . 자체 자바 스크립트 기능 세트를 지원하며 파일 시스템 작업과 같은 백엔드 사용 사례를 충족시키는 일련의 API를 제공합니다. Node.js를 배우는 것은 단일 언어를 배우면 프론트 엔드와 백엔드에서 모두 작업 할 수 있으므로 훌륭한 선택입니다. Node.js에는 express , koa 또는 LoopBack 과 같은 몇 가지 인기있는 프레임 워크가 있습니다 .
컴파일 된 언어를 사용하여 작성된 코드는 먼저 실행하기 전에 이진 파일로 컴파일해야합니다. 개발자가 명시 적으로 추가 단계를 수행해야하지만 추가적인 이점도 있습니다. 컴파일러는 불일치에 대한 코드를 분석하고 잠재적 인 문제에 대해 사용자에게 일찍부터 피드백을 줄 수 있습니다. 일부 컴파일러는 특정 플랫폼에 대해 결과 바이트 코드를 최적화하여 우수한 성능을 보장합니다. 컴파일 된 언어는 스크립팅 언어보다 진입 장벽이 높을 수 있지만 대용량 프로젝트의 경우 안전 조치가 강화되고 설명이 더 명확한 코드로 인해 일반적으로 더 적합합니다.
선택할 수있는 언어가 많습니다.
Java 는 Sun Microsystems가 개발하고 현재 Oracle에서 유지 관리하는 고급 오브젝트 지향 프로그래밍 언어입니다. Java는 다른 플랫폼간에 이식 가능하도록 설계되었습니다. 소스는 모든 플랫폼에서 Java Virtual Machine에서 실행할 수있는 Java 바이트 코드로 컴파일됩니다. 웹 애플리케이션 개발을위한 다양한 프레임 워크가있는 매우 성숙한 언어입니다 . 가장 인기있는 것은 Spring 입니다. 또한 Java는 Android 응용 프로그램을 개발하는 데 사용할 수 있습니다. 코 틀린 (Kotlin)과 같은 다른 JVM 언어에 비해 구식이고 열등한 자바를 고려하는 경향이 있지만, 여전히 가장 인기있는 프로그래밍 언어 중 하나입니다. Java는 엔터프라이즈 부문에서 매우 인기가 있습니다.
Go 는 Google에서 개발 한 비교적 젊은 언어로 인기가 빠르게 증가하고 있습니다.
Java 또는 C #보다 덜 상세하고 단순한 기본 요소를 기반으로하며 다른 언어에 존재하는 복잡한 구문 중 일부를 의도적으로 생략합니다.
Go는 매우 빠르며 최소 메모리 사용 공간과 일류 동시성 지원을 제공하므로 속도와 자원 소비가 중요한 프로젝트에 적합합니다.
고 (Go) 주변의 도서관 및 도구 생태계는 여전히 개발 중이며 지역 사회에서 많은 흥미로운 프로젝트가 나타납니다.
Go는 블록 체인 개발에 큰 인기를 얻고 있습니다.
Kotlin 은 Java의 경쟁자 인 JetBrains에서 개발 한 언어입니다.
Kontlin은 Java 가상 머신에서 실행되지만 JavaScript로 컴파일 될 수도 있습니다.
Java보다 덜 자세하게 디자인되었으며 일류 함수 지원을 추가하고 일반적인 오류를 방지하기위한 추가 안전 조치를 제공합니다.
Java와 마찬가지로 Android 애플리케이션 개발에도 사용할 수 있습니다.
스칼라는 자바에 대한 또 다른 JVM 기반 언어이자 대안이다.
보다 간결한 구문과 추가적인 안전 기능을 갖추고 있으며 기능 프로그래밍을 많이 사용합니다.
- 동시성과 고 가용성을 위해 설계된 기능 언어. Erlang은 고성능과 확장 성이 중요한 어플리케이션에서 널리 사용됩니다.
많이 사용되는 사례로는 이미지 및 신호 처리 또는 대용량 데이터 분석이 있습니다.
- 강력한 타이핑 시스템과 명확하고 신뢰할 수있는 코드를 생성하는 데 도움이되는 디자인에 가치있는 또 다른 함수형 프로그래밍 언어입니다.
기능적 언어이기 때문에 효율적으로 확장되고 우수한 성능을 제공합니다.
대부분의 응용 프로그램에서 중요한 기능은 사용자의 데이터를 저장하는 것입니다. 일반적으로 데이터베이스 관리 시스템 (DBS)이라는 특별한 소프트웨어를 사용하여 수행됩니다. DBS는 기본 데이터 저장소에 대한 액세스를 제공하여 응용 프로그램이 데이터를 저장, 검색 및 업데이트 할 수있게합니다. 다양한 형태와 양의 데이터에 최적화 된 다양한 종류의 데이터베이스가 있습니다. 이 가이드에서는 관계형과 비 관계형의 두 가지 가장 일반적인 유형을 살펴 보겠습니다.
관계형 데이터베이스는 테이블에 행을 저장하고 행은 항목을 나타내고 열은 항목 속성을 저장합니다. 다른 테이블의 행은 외래 키를 사용하여 서로 다른 유형의 항목 간의 관계를 나타낼 수 있습니다. 예를 들어 온라인 상점을 구축하는 경우 "주문 번호", "고객 이름"및 "배송 주소"와 같은 열을 포함하는 주문을 저장하기위한 테이블이있을 수 있습니다. 여기서 각 행은 별도의 주문을 나타냅니다. 주문한 품목에 대한 정보는 주문 표에 대한 참조와 함께 "주문 품목"이라는 다른 표에 저장됩니다.
대부분의 관계형 데이터베이스는 SQL (Structured Query Language) 또는 해당 방언으로 불리는 언어를 사용하여 데이터를 쿼리하거나 수정합니다. 이 때문에 SQL 데이터베이스라고도합니다.
널리 사용되는 관계형 데이터베이스는 다음과 같습니다.
Oracle Database 는 Oracle에서 개발 한 데이터베이스입니다. 높은 확장 성과 강력한 기능으로 인해 대기업에서 자주 사용합니다. 라이센스 비용이 높기 때문에 중소 규모 프로젝트에 자주 사용되지 않습니다.
- 스웨덴 회사 인 MySQL AB가 개발했으며 현재 Oracle이 소유하고있는 무료 오픈 소스 데이터베이스입니다.
MySQL은 각 테이블마다 다른 스토리지 엔진을 사용하여 데이터를 다르게 저장하고 사용할 수 있습니다.
MySQL은 광범위한 경우에 사용되지만 웹 애플리케이션, 특히 소위 LAMP (Linux, Apache, MySQL, PHP) 스택에서 많이 사용됩니다.
또한 대규모 사용자를위한 여러 유료 버전을 제공합니다.
MSSQL이라고도하는 SQL Server 는 Microsoft에서 유지 관리하는 데이터베이스입니다.
다양한 워크로드 및 데이터 볼륨을 처리하기위한 다양한 버전이 있습니다.
SQL Server는 Oracle의 주요 경쟁 업체이며 Microsoft 스택 사용자들 사이에서 널리 사용됩니다.
- 전 세계 팀의 자원 봉사자가 개발 한 무료 오픈 소스 데이터베이스입니다.
풍부한 기능 세트를 제공하며 대용량 워크로드를 처리 할 수 있습니다.
비 관계 데이터베이스는 테이블이 아닌 다른 모델에 데이터를 저장합니다. 키 - 값 쌍, 문서, 그래프 관계 또는 시계열을 저장하는 것과 같이 사용 사례에 따라 선택할 수있는 다양한 모델이 있습니다. 비 관계형 데이터베이스는 잠시 동안 사용되었지만 최근에는 디자인이 단순하고 확장이 용이하기 때문에 인기가 급증했습니다.
비 관계형 데이터베이스는 대부분 SQL 대신 자신의 쿼리 언어를 사용하기 때문에 NoSQL 데이터베이스라고도합니다.
이 세 데이터베이스는 웹 개발에서 자주 사용됩니다.
MongoDB 는 JSON과 유사한 객체를 저장하는 무료 오픈 소스 문서 데이터베이스입니다.
이러한 객체를 저장 및 검색하고 응용 프로그램의 객체에 매핑 할 수 있습니다.
또한 일반적인 쿼리 및 집계 기능도 있습니다.
MongoDB는 데이터 일관성이 주요 관심사가 아닌 어플리케이션을위한 좋은 후보입니다.
Redis 는 캐시 된 데이터를 일시적으로 저장하고 메시지를 전송하는 데 자주 사용되는 메모리 내 키 - 값 데이터베이스입니다.
이러한 데이터가 반드시 유지 될 필요는 없기 때문에 데이터를 디스크에 저장하는 것이 비활성화되거나 지연되어 성능이 향상 될 수 있습니다.
Redis는 문자열, 숫자, 목록,지도 등 다른 값 유형을 저장할 수 있습니다.
Elastic Search 는 오픈 소스 텍스트 검색 및 분석 엔진입니다.
텍스트 문서를 저장할 수 있으며 검색 가능한 텍스트 색인을 생성합니다. 탄성 검색은 일반적으로 로그 분석 (특히 ELK 스택의 일부로 사용 ) 및 자유 텍스트 문서 검색에 사용됩니다.
때때로 서버 측 구성 요소는 백그라운드에서 실행해야하는 작업을 트리거해야합니다. 예를 들어, 비즈니스 보고서를 요청하면 사용자가 보고서를 기다리지 않고도 보고서를 생성하고 사용자에게 전자 메일로 보내는 긴 프로세스가 트리거 될 수 있습니다. 이를 위해서는 다른 구성 요소로 메시지를 보내고 성공적으로 처리되었는지 확인해야합니다. 작업이 실패하면 재시작해야합니다. 이러한 기능을 제공하는 소프트웨어를 메시지 브로커라고합니다.
가장 인기있는 두 가지 메시지 중개인은 다음과 같습니다.
RabbitMQ 는 다양한 메시지 전달 모델과 라우팅 규칙을 지원하는 전통적인 메시지 브로커입니다. 그것은 메시지가 소비자에 의해 배달되고 처리 될 것을 보장합니다. 실패한 메시지는 데드 - 레터 큐에 저장 될 수 있습니다. RabbitMQ는 다른 메시지 브로커 및 클라이언트 라이브러리에서도 지원되는 표준 AMPQ 프로토콜 을 통해 작동합니다 .
Apache Kafka 는 메시지 브로커로도 사용할 수있는 스트림 처리 엔진입니다.
대부분의 표준 메시지 브로커 기능을 제공하는 것 외에도 히스토리의 메시지를 다시 처리 할 수있는 것과 같은 고급 기능을 제공합니다.
또한 대량의 메시지를 처리 할 수있는보다 우수한 성능을 제공합니다.
이 두 장을 참 으면, 백엔드 개발과 프론트 엔드 개발에 모두 사용되는 기술에 대한 아이디어가 이미 있어야합니다. 결정을 내리기 전에 몇 가지 조사를하고 전문적으로하고 싶은 것은 무엇이든 당신이 링크를 따라 가기를 권장합니다.