카우치베이스 개발팀은 그동안 나쁜 웹사이트 클럽 on 무료 코드 캠프 자료. 

무료코드캠프는 대화형 학습 웹 플랫폼, 온라인 커뮤니티 포럼, 채팅방, 온라인 출판물 및 지역 단체로 구성된 비영리 단체로, 누구나 소프트웨어 개발에 접근할 수 있도록 하는 것을 목표로 합니다.

나쁜 웹사이트 클럽은 신규 학습자의 프로그래밍 여정을 돕는 온라인 커뮤니티입니다.

저희는 fCC 학습자들에게 보다 '실제' 상황에서 프로젝트에 어떤 일이 일어날 수 있는지 보여주기 위해 스트리밍을 해왔습니다. 반응형 웹 디자인 과정부터 시작하여 설문조사 양식과 같은 몇 가지 예제를 가져와서 완성한 후 프로덕션에 적용했습니다. 전체 시리즈는 YouTube, LinkedIn, Twitter 및 Twitch에서 스트리밍되며, 녹화본은 이 YouTube 재생 목록에서 확인할 수 있습니다: 새로운 카우치베이스 스트림: 7월 31일부터 시작됩니다!

저는 개인적으로 설문 조사 프로젝트. 이 블로그 게시물 시리즈에서는 GitHub에 코드를 게시하고, Netlify를 사용하여 온라인으로 설문조사를 배포하고, Couchbase Capella에 콘텐츠를 저장하는 모든 추가 단계를 보여드리겠습니다.

1단계 - HTML 양식 만들기

FreeCodeCamp 설문조사 예제에서 많은 영감을 얻어(복사, 붙여넣기, 다듬기) 다음과 같은 HTML 양식을 만들었습니다. 원래 양식보다 조금 더 간단합니다.

그리고 styles.css 파일은 원본과 완전히 동일합니다. 여기에서 열기 을 클릭하여 설문조사 양식이 실제로 작동하는지 확인하세요. 설문 조사 양식을 열 수 있습니다. 브라우저에서 해당 페이지를 마우스 오른쪽 버튼으로 클릭하면 다음과 같은 내용이 표시됩니다. 페이지 소스 보기 또는 검사. 이를 클릭하면 페이지의 코드가 표시되는 패널이 열립니다. 이 보기에 있는 동안 다음과 같은 링크를 클릭할 수 있습니다. style.css 을 클릭하거나 스타일 탭을 클릭하면 특정 요소에 적용된 CSS도 볼 수 있습니다.

이 코드 샘플을 테스트하려면 먼저 터미널을 사용하여 이 리포지토리를 로컬 컴퓨터에 복제하거나 zip 파일로 다운로드할 수 있습니다.)

Screenshot of button in github where you can clone or download code

브라우저로 이동하여 상단 표시줄에서 다음을 선택합니다. 파일, 열기를 선택하는 것보다 index.html 파일을 다운로드한 폴더(또는 zip 폴더)에서 실행합니다. 브라우저 URL을 살펴보면 로컬 파일의 경로가 표시됩니다. 그리고 제출을 클릭해도 아무 작업도 수행하지 않는 다음과 같은 내용이 표시됩니다.

The screenshot of the survey from created during the freecode camp Survery lesson

그렇다면 문제는 어떻게 인터넷에 배포하고 어떤 작업을 수행하게 할 것인가 하는 것입니다. 클릭 후 실행할 백엔드 코드가 필요합니다. 그리고 그 코드가 양식 콘텐츠를 데이터베이스에 저장하도록 만들어야 합니다.

2단계 - Git, Github, Netlify

이 양식을 인터넷에 실시간으로 배포하는 것부터 시작해 보겠습니다. 이를 위해 Netlify를 사용하겠습니다. 먼저 가장 먼저 해야 할 일은 Netlify CLI 가 설치되어 있고 로그인되어 있는지 확인합니다. 설치되어 있지 않은 경우 가장 빠른 방법은 터미널에 직접 입력하는 것입니다:

자세한 내용은 Netlify 시작하기 문서.

입력 넷라이파이 버전 현재 내 터미널에서 NETLIFY-CLI/15.6.0 WIN32-X64 NODE-V18.5.0. 따라서 설치 및 준비가 완료된 것으로 알고 있습니다.

그런 다음 다음을 입력합니다. netlify 로그인 를 클릭합니다. Netflify 로그인 양식으로 이동합니다.

이제 모든 것이 배포 단계로 이동할 준비가 되었습니다. 하지만 로컬에서 테스트해야 합니다. 대부분의 개발자가 그렇게 하거든요. 이를 위해 다음과 같이 입력합니다. 넷라이파이 개발 를 클릭합니다.

터미널에서 다음과 같은 내용이 출력되고 브라우저에서 양식이 열립니다.

브라우저 URL 표시줄을 다시 살펴보면 달라진 것을 확인할 수 있습니다. 로컬 파일이 아닌 웹 사이트 주소처럼 보입니다. 축하합니다. 방금 첫 번째 로컬 서버를 실행하여 HTML 및 CSS 파일을 제공했습니다.에틀리파이 개발! 컴퓨터에서 웹사이트가 실행되고 있습니다. 이제 인터넷의 모든 사람이 소스 코드와 사이트 자체에 액세스할 수 있도록 만들어 보겠습니다.

GitHub(또는 GitLab, Heptapod, 기타 코드 소스 호스팅 솔루션 등 다양한 솔루션이 있습니다!)로 이동하여 새 리포지토리를 만듭니다. 방문 https://github.com/new 를 선택합니다. 이제 리포지토리 마법사 생성 단계에 들어왔습니다. 조직, 리포지토리 이름 및 설명만 설정한 후 리포지토리 만들기 버튼을 클릭합니다.

A screenshot of Github's repository creation wizard

A screenshot of a newly intitialized Github repo

작업 폴더를 변환하는 데 필요한 모든 지침을 제공합니다. git 리포지토리를 열고 GitHub 프로젝트에 연결합니다. 제가 터미널에 입력한 내용은 다음과 같습니다(아래 내용을 복사하여 터미널에 붙여넣거나 아래 각 줄 뒤에 Enter 키를 눌러 실행할 수 있습니다). 참고로 6번째 줄을 프로젝트 리포지토리 URL로 변경해야 합니다:)

이것이 결과 터미널 출력입니다:

 

이제 Github 페이지로 돌아가서 다시 로드하면 다음과 같은 화면이 표시됩니다:

A screenshot of the github repository after an intial commit was pushed

축하합니다. 이제 누구나 보고, 배우고, 기여할 수 있도록 코드가 Github에 공개되었습니다. 이제 프로덕션 단계입니다! 웹사이트를 만들어 봅시다 💪

방문하기 https://app.netlify.com/start/deploy. 그러면 Netify의 새 프로젝트 마법사로 이동합니다. 시작에 도움이 되는 다양한 버튼, GitHub, GitLab, Bitbucket, AzureDevops가 표시됩니다. GitHub를 클릭해 보겠습니다.

A screenshot of the Netlify Wizard for new project creation

GitHub 프로필을 Netlify에 연결할지 묻는 창이 몇 개 표시됩니다. 계속 진행하면 다음 페이지로 이동합니다.

A screenshot of the second step of Netlify's project creation wizard after picking Github

GitHub 조직에 Netlify 앱이 설치되어 있지 않다는 메시지가 표시됩니다. 를 클릭합니다. GitHub에서 Netlify 구성하기를 클릭하면 Netlify를 설치할 GitHub 조직과 액세스 권한을 부여할 리포지토리를 선택하라는 푸프 창이 열립니다.

A screenshot of Github's authorization matrix

기본값을 그대로 두고 다음 단계로 진행합니다. 이제부터 GitHub 계정의 모든 리포지토리를 볼 수 있습니다.

A screenshot of Netlify's project List showing linked Github project

기본값을 그대로 두고 배포 내 프로젝트:

A screenshot of the default Netlify project configuration

 

인터넷 웹사이트에 새로 배포된 링크가 표시됩니다. https://jolly-sfogliatella-3e6c07.netlify.app/. 넷라이파이는 샌드박스 환경을 제공합니다. netlify.app 도메인을 사용하면 자체 도메인 이름 없이도 배포할 수 있습니다.

A screenshot of a newly created Project

축하합니다, 이제 웹사이트가 인터넷에 공개되었습니다. 잠시 시간을 내어 축하해 주세요 🎉.

이제 다음을 입력하여 이 Netlify 프로젝트를 연결할 수 있습니다. 넷라이파이 링크 를 클릭합니다. 옵션 목록이 제공됩니다. 기본값을 선택합니다. 현재 git 원격 오리진 사용(https://github.com/yourOrg/yourProject). GitHub를 통해 배포했으므로 Netlify는 리포지토리의 git 정보를 가지고 있으며 어떤 프로젝트를 사용할지 유추할 수 있습니다(이 시점에는 프로젝트가 하나만 있을 수도 있습니다). 결과는 다음과 같습니다:

이제 몇 가지를 시도해 볼 수 있습니다. 양식에 🐼 이모티콘을 추가해 보겠습니다. In index.html에서 9번째 줄을 수정합니다: <h1 id="”title”" class="”text-center”">설문 조사 양식</h1><h1 id="”title”" class="”text-center”">설문조사 양식 🐼</h1>

그런 다음 파일을 저장하고 이 변경 사항을 Github에 푸시합니다. 그런 다음 터미널에 다음과 같이 입력합니다. netlify open:site:

아주 멋진 일이 일어나고 있습니다. 깃허브 리포지토리가 넷플라이에 연결되어 있기 때문에 새 배포는 넷플라이에서 자동으로 수행됩니다. 따라서 웹사이트를 열면 팬더 <3을 볼 수 있습니다.

이 시점에는 코드를 보관하는 Github 리포지토리가 있으며, Netlify에 통합되어 새 코드를 푸시할 때 자동으로 새 배포를 생성합니다. 또한 netlify CLI를 작업 폴더에 저장합니다. 백엔드 코드를 작성할 준비가 되었습니다!

3단계 - 백엔드

이 장에서는 다음 질문에 대한 답변을 제공합니다: 누군가 양식을 작성하고 다음을 클릭하면 어떻게 되나요? 제출 ?

지금 당장 대답은 아무것도 없습니다. 이제 바꿔봅시다. 자바스크립트를 작성하면 됩니다. 누군가 유효한 정보를 입력하면 팝업 알림을 표시하고 제출하기. 귀하의 index.html 파일에 다음을 넣습니다. <script> 마지막 닫는 div 태그 사이의 코드 </div> 그리고 닫는 본문 태그 앞에 </body>. 

 

코드를 저장하고 페이지를 다시 로드한 후 양식을 작성하고 제출를 입력하면 다음과 같은 내용이 표시됩니다:

A screenshot of a sucessfull form submission

이제 사용자가 양식을 제출할 때 어떤 일이 일어나는지 알아봤으니 조금 더 나아가 보겠습니다. 양식의 내용을 살펴보고 올바른 데이터를 JSON으로 가져올 수 있는지 확인하고자 합니다. 이름에는 문자열, 나이에는 정수, 추천에는 부울이 필요합니다.

그리고 HTML 확인란이 제대로 작동하지 않는 것으로 나타났습니다. 기본값은 아무 값도 제공하지 않으며, 이 확인란을 선택하면 값 필드의 내용이 표시됩니다. 다른 입력 필드인 숨김을 추가하여 기본값이 False가 되도록 하겠습니다.

이제 자바스크립트 코드에 대해 살펴볼 흥미로운 새 줄이 몇 가지 있습니다.

정리가 되었으니 이제 본격적으로 Netlify 함수를 만들어 보겠습니다. Enter NETLIFY 함수:생성 를 입력합니다. 다음과 같은 내용이 표시될 것입니다:

선택 서버리스 함수를 사용하고, 경로에 대한 다음 질문은 기본값을 그대로 두고, 자바스크립트를 언어로 유지하고, 기본값을 유지합니다. 헬로월드 템플릿을 사용하는 것보다 함수의 이름을 지정하는 것이 좋습니다. 제 함수는 저장 양식. 이렇게 하면 netlify 폴더에 새 파일이 생성됩니다. 실행하면 넷라이파이 개발 이제 로그에 새로운 줄이 표시됩니다:

즉, 넷리파이 개발 서버가 새로 생성한 함수도 서비스하고 있다는 뜻입니다. 새로 생성된 파일을 살펴보세요. ./netlify/functions/saveform/saveform.js.

사용자가 다음을 클릭할 때 이 함수를 호출하여 사용해 보겠습니다. 제출. 마지막 코드 뒤에 다음 코드를 추가하면 됩니다. 콘솔 로그 호출합니다:

추가, 커밋 및 푸시. netlify open:admin

A screenshot showing the Netlify site administrator overview, with the list of all deployments already done

A screenshot of the form page and the developer tools opened, showing the message returned by the Netlify function

이 시점에서 인터넷에 프론트엔드와 백엔드가 배포되었습니다. 하지만 여기서는 Netlify 마법사가 만든 기본 함수를 호출하기만 하면 됩니다. 다음 단계는 양식의 콘텐츠를 해당 함수로 전송하고 데이터베이스에 저장하는 것입니다.

4단계 - 데이터베이스

가장 먼저 할 일은 양식 세부 정보를 함수에 전송하는 방법을 알아내는 것입니다. 이를 위해서는 GET 메서드를 POST 메서드로 변경해야 합니다. 이러한 것을 HTTP 요청 메서드라고 하며 HTTP 동사라고도 합니다. 전체 목록은 다음에서 확인할 수 있습니다. MDN. Get 메서드 요청은 데이터를 검색하는 데만 사용됩니다. 포스트 메서드 요청은 데이터를 생성하거나 변경하는 데 사용됩니다. 이것이 바로 우리가 원하는 것입니다. 누군가 양식을 제출할 때 Dababase에 새 항목을 만들고 싶습니다. HTTP 요청에는 메서드, 일부 헤더(요청에 대한 메타데이터, 여기서는 요청이 Content-Typ 헤더가 있는 JSON 콘텐츠라고 가정합니다), 본문이 있습니다. 요청 본문은 JSON 텍스트입니다.

프론트엔드에서 백엔드로의 HTTP 요청이 변경되었으므로 이제 백엔드 코드를 수정해야 합니다.

 

웹 개발 콘솔에 다른 메시지가 표시되어야 합니다. {"name":"yourName"}.

양식 데이터를 백엔드로 전송하고 확인했습니다. 이제 데이터베이스 측면으로 넘어가겠습니다. Couchbase에서 일하면서 제가 사용할 데이터베이스는 바로 이 데이터베이스입니다. 간단한 방법은 https://cloud.couchbase.com/sign-up에서 계정을 생성하면 신용카드 없이 30일 평가판을 사용할 수 있습니다.

A screenshot of the first Couchbase Capella Get started wizard step

기본값을 그대로 두거나 선호하는 클라우드 제공업체와 가장 가까운 지역을 선택할 수 있습니다. 를 클릭합니다. 지금 배포 를 클릭하고 데이터베이스 배포를 기다립니다.

A screenshot of the Couchbase Capella trial home

거기에서 두 가지 작업을 수행해야 합니다. 백엔드 코드에서 해당 데이터베이스에 연결할 수 있는지 확인하고, 데이터를 어딘가에 쓸 수 있는지 확인합니다. 계속해서 연결 탭을 클릭합니다.

카우치베이스에서는 데이터를 버킷에 저장합니다. 기본적으로 평가판에는 미리 가져온 여행 샘플 버킷이 제공됩니다. 이 버킷을 사용하지 않겠습니다. 대신 자체 버킷을 만들겠습니다. 버킷을 클릭합니다. 설정 의 최상위 메뉴에서 버킷 를 클릭합니다.

A screenshot of the Bucket settings in Couchbase Capella

이제 + 버킷 만들기을 클릭하고 이름을 지정하고 나머지는 기본 설정으로 둡니다. 버킷 만들기.

A screenshot of the Buckets settings home, with the newly created bucket visible

새 버킷이 생겼으니 이제 관련 자격 증명을 만들어야 합니다. 버킷의 데이터베이스 액세스 버튼보다 데이터베이스 액세스 만들기 버튼을 클릭합니다.

A screenshot of the empty Credentials settings

A screenshot fo the credentials creation detail

사용자 이름과 비밀번호를 모두 기억하고 있는지 확인한 후 데이터베이스 만들기. 마지막으로 해야 할 일은 이 데이터베이스에 공개적으로 액세스할 수 있도록 허용하는 것입니다. 지금은 숨겨져 있습니다. 데이터베이스에서 허용된 IP 주소보다 허용 IP 추가. 를 클릭합니다. 액세스 허용 어디서나를 클릭하고 지침을 따릅니다. 이렇게 하면 양식을 미리 채운 다음 허용 IP 추가 버튼을 클릭합니다. 다소 번거롭다고 생각할 수도 있습니다. 왜 기본값이 아닌가요?

A screenshot of the Allow Access from Anywhere popup

A screenshot of the resuting operation with the newly added IP range

이제 연결 탭을 클릭합니다. 탭이 표시됩니다. 연결 문자열를 클릭하고 데이터베이스 자격 증명을 선택한 다음 언어를 노드로 전환하면 백엔드 코드에서 데이터베이스에 연결할 수 있는 올바른 지침이 제공됩니다.

A screenshot of the SDK connection instructions, with doc and code

이것을 함수 코드에 복사하여 붙여넣고 몇 가지를 더 추가할 수 있습니다:

Couchbase의 경우 설치해야 합니다. 실행 중 npm i couchbase@4.2.4 를 사용하면 됩니다. 현재 넷리파이/카우치베이스 호환성은 카우치베이스 버전 4.2.4 이하에서 보장됩니다. 이는 SDK의 특성 때문입니다. C SDK 위에 자바스크립트 인터페이스로 구성되어 있습니다. 그리고 C 종속성은 올바른 버전에서 시스템 종속성을 찾을 것으로 기대합니다. 현재 Couchbase 4.2.5는 다음을 찾을 것으로 예상됩니다. GLIBC_29 하지만 Netlify 백엔드 코드를 실행하는 Ubuntu 시스템에서는 사용할 수 없습니다.

이제 종속성이 생겼으니 종속성을 빌드하는 방법을 명시해 보겠습니다. 종속성을 추가하려면 netlify.toml 파일을 리포지토리 루트에 다음 내용으로 수정합니다:

몇 가지 작업을 수행합니다. 종속성을 설치하고 디버그 심볼 테이블을 제거합니다. couchbase_impl.node. 이 파일은 노드 SDK에서 사용하는 C 라이브러리입니다. 그리고 이 파일은 현재 넷라이파이에서 처리하기에는 너무 큽니다. 그래서 빌드 과정에서 불필요한 불필요한 부분을 제거하고 있습니다.

이제 새 파일을 추가하고 커밋한 후 GitHub에 푸시할 수 있습니다. 하지만 그렇게 하면 비밀번호가 GitHub로 푸시됩니다. 우리는 그렇게 하고 싶지 않습니다. 대신 다음을 실행하여 테스트할 수 있습니다. 넷라이파이 개발. 계속해서 양식을 다시 제출하세요.

모든 것이 순조롭게 진행되었다면 데이터베이스에 데이터를 기록했습니다! Couchbase Capella UI로 이동하여 쉽게 확인할 수 있습니다. 클릭 데이터 도구를 클릭하고 버킷, 범위 및 컬렉션을 선택하면 문서에서 설문조사를 볼 수 있습니다.

방금 데이터베이스 연결 코드를 작성했습니다!

5단계 - 구성 관리

GitHub에서 자격 증명을 강요하지 않기 위해 환경 변수를 사용하겠습니다. 환경 변수는 모든 운영 체제에서 공통적으로 사용되며 다양한 환경(다양한 OS, 클라우드, 테스트, 스테이징, 프리프로덕션, 프로덕션 등 워크플로에 맞는 환경)에서 구성을 관리하는 가장 좋은 방법입니다.

Mac 또는 Linux에서는 다음을 실행할 수 있습니다. 내보내기 MYVARIABLE="value" 을 클릭합니다. Windows에서는 다음을 실행할 수 있습니다. $Env:MYVARIABLE="value"

Netlify의 컨텍스트에서 이를 정의하려면 UI를 통해 수동으로 수행하거나 CLI를 사용할 수 있습니다:

이제 파일을 추가하고 코드를 커밋하고 푸시할 수 있습니다. 축하합니다, 풀스택이 완성되었습니다. 백엔드, 프론트엔드 및 데이터베이스. 그리고 모든 것을 라이브로 배포했습니다! 하지만 작업이 끝난 것은 아닙니다. 더 전문적으로 만들기 위해 아직 할 수 있는 일이 몇 가지 있습니다.

6단계 - 사용자 피드백

현재로서는 사용자가 클릭할 때 많은 일이 일어나지 않습니다. 제출하기 버튼을 클릭합니다. 성공적으로 기록되었는지 여부를 알리기 위해 이를 변경해야 합니다. 먼저 개발자 측에서 오류를 확인합니다. HTTP 상태 코드는 잘 만들어져 있으며, 일반적으로 400 이상이면 오류이므로 다음과 같은 작업을 수행할 수 있습니다:

테스트하려면 연결 문자열 또는 Couchbase에 대한 자격 증명의 어딘가에 오타를 입력하면 됩니다. 웹 콘솔에서 오류를 클릭하면 제출하기. 하지만 웹 콘솔은 우리만을 위한 것이므로 사용자에게 적절한 오류 또는 성공 메시지를 추가해야 합니다.

양식의 끝 부분 바로 앞에 오류 및 성공 메시지가 있는 스팬 HTML 요소를 몇 개 추가했습니다. 참고로 숨기기 현재로서는 보이지 않게 만드는 CSS 클래스입니다.

그리고 여기에 해당 CSS가 있습니다. 오류를 빨간색으로 표시하고, 요소를 숨기거나 표시하고, 멋진 페이드 아웃 애니메이션을 멋지게 표현했습니다.

이제 모든 것을 합칠 차례입니다. 처음 두 줄은 방금 추가된 새 스팬 요소를 가져옵니다. 호출은 form.reset() 는 반환된 응답 상태 코드가 다음과 같은 경우 양식에서 모든 값을 지우는 것입니다. 200. 페이드 아웃 클래스를 추가하여 메시지를 표시하는 것보다 7000ms 타임아웃 함수를 사용하여 모든 클래스를 제거하고 요소를 다시 숨기는 것이 더 낫습니다. 오류가 발생했을 때도 마찬가지입니다.

이제 양식을 다시 테스트 제출하고 선택한 작업에 따라 다른 성공 또는 오류 메시지를 확인할 수 있습니다. 만족스러우면 해당 코드를 추가, 커밋 및 푸시할 수 있습니다.

이 가이드의 마지막 부분까지 완료하셨습니다! git, GitHub, Netlify 및 Couchbase Capella를 사용하여 웹에 HTML 양식을 배포하고 사용자가 양식을 제출할 때마다 콘텐츠가 데이터베이스에 저장되었는지 확인했습니다.

더 자세히 알아볼 준비가 되셨나요?

작성자

게시자 로랑 도귄

Laurent는 파리에 사는 괴짜 금속공학도입니다. 주로 Java로 코드를 작성하고 AsciiDoc으로 구조화된 텍스트를 작성하며 데이터, 리액티브 프로그래밍 및 기타 유행어에 대해 자주 이야기합니다. 또한 Clever Cloud와 Nuxeo의 개발자 옹호자로 활동하며 해당 커뮤니티가 더 크고 강력하게 성장할 수 있도록 자신의 시간과 전문성을 바쳤습니다. 현재 Couchbase에서 개발자 관계를 운영하고 있습니다.

댓글 남기기