버블(Bubble.io) 원데이클래스 - 중급
사전준비
KaKao Developers API Key 생성 Kakao Developers 내 애플리케이션
카카오계정
accounts.kakao.com
채널톡 api key 생성 채널톡 (channel.io)
채널톡
desk.channel.io
토스페이먼츠 API키 발급 API 키 | 토스페이먼츠 개발자센터 (tosspayments.com)
API 키 | 토스페이먼츠 개발자센터
토스페이먼츠 결제 연동 문서, API, 키, 테스트 내역, 웹훅 등록 등 개발에 필요한 정보와 기능을 확인해 보세요. 결제 연동에 필요한 모든 개발자 도구를 제공해 드립니다.
developers.tosspayments.com
수업내용
- (카카오) SNS 로그인 구현, (토스) 결제 연동, 채널톡 연동, NHN Cloud (SMS/알림톡) 연동 등
1. 데이터 구조 이해
데이터 타입(Data Type)
데이터 타입은 특정 종류의 데이터가 담길 수 있는 일종의 "틀"이다.
데이터 타입은 특정 종류의 데이터를 저장하기 위한 "틀"이다. 각 데이터 타입은 다양한 속성(필드)을 가지며, 이 속성들은 그 데이터 타입에 속한 개체의 특정 정보를 저장한다.
예를 들어, 사용자의 정보를 저장하는 "사용자(User)"라는 데이터 타입이 있을 수 있고, 상품의 정보를 저장하는 "상품(Product)"이라는 데이터 타입이 있을 수 있다.
예시:
User: 사용자 정보를 저장하는 데이터 타입
Product: 상품 정보를 저장하는 데이터 타입
데이터 필드(Data Field)
데이터 필드는 데이터 타입 안에 들어가는 개별 속성이다. 필드는 우리가 어떤 데이터를 저장할지를 구체적으로 정의한다. 예를 들어, 사용자(User)라는 데이터 타입 안에는 이름, 이메일, 전화번호와 같은 필드가 있을 수 있다. 각각의 필드는 사용자의 특정 정보를 저장한다.
각 필드는 데이터를 저장할 때 텍스트(text) 데이터, 숫자(number) 데이터, 날짜(date) 데이터 등과 같이 특정 유형의 데이터를 저장한다.
필드 유형
- text: 문자열 데이터를 저장 : 이름, 이메일, 주소 등.
- number: 숫자 데이터를 저장 : 가격, 나이, 수량 등.
- date: 날짜 데이터를 저장 : 생일, 주문 날짜 등.
- image: 이미지 데이터를 저장 : 사용자 프로필 사진, 상품 이미지 등.
- yes/no: 참/거짓 데이터를 저장 : 결제 완료 여부, 활성화 여부 등.
- List of [Data Type]: 다른 데이터 타입의 리스트를 저장: 사용자가 장바구니에 담은 상품들.
수업에 사용된 데이터 타입과 데이터 필드
수업에 사용된 데이터 타입을 정의하고 각각의 필드는 다음과 같다.참고로 * 수업에서는 장바구니용 상품과 같은 한글로 데이터타입을 사용했는데 정리하면서 일부 영문으로 변경했다
1) 사용자(User) : 사용자의 정보를 저장
- 이름 (name): 사용자의 이름을 저장. text 유형. (ex) "홍길동"이라는 이름이 이 필드에 저장될 수 있다.
- 이메일 (email): 사용자의 이메일 주소를 저장. text 유형 (ex) "hong@gmail.com" 같은 이메일 주소를 저장
- 전화번호 (phone number): 사용자의 전화번호를 저장. text 유형 (ex) "010-1234-5678" 같은 전화번호가 저장
- 관심상품 리스트 (WishList): 사용자 관심 상품들의 리스트를 저장. List of Product 유형, 여러 개의 상품을 참조
- 장바구니 리스트 (CartList): 사용자가 장바구니에 담은 상품들의 리스트를 저장. List of Cart Item 유형
2) 상품(Product) : 상품의 정보를 저장
- 상품명 (Product Name): 상품의 이름을 저장 text 유형으로, (ex) "노트북" 같은 이름을 저장
- 가격 (Price): 상품의 가격을 저장. number 유형 (ex) 1000000 (100만 원) 같은 숫자가 저장
- 상품 이미지 (Product Image): 상품의 이미지를 저장, image 유형 (ex) 상품의 사진을 저장
- 상세 설명 (Description): 상품에 대한 설명을 저장 text 유형 (ex) 상품의 특징이나 사용법 등을 설명하는 글을 저장
3) 장바구니 상품(Cart Item) : 사용자가 장바구니에 추가한 상품 정보를 저장
- 상품 (Product): 장바구니에 담긴 상품을 참조하는 필드. 이 필드는 Product 데이터 타입을 참조한다
- 수량 (Quantity): 사용자가 장바구니에 담은 상품의 수량을 저장. number 유형, (ex) 2개 같은 숫자가 저장
- 수량 반영 가격 (Total Price): 수량에 따라 계산된 가격을 저장. number 유형 (ex) 수량과 단가를 곱한 값을 저장
- 결제 완료 여부 (Payment Completed): 결제가 완료되었는지 여부를 저장. yes/no 유형, 결제가 완료되면 "yes"가, 아니면 "no"가 저장
- 상품 리스트 (Product List): 주문에 포함된 상품들의 리스트를 저장. List of Cart Item 유형, 여러 개의 상품을 참조
- 총액 (Total Amount): 주문의 총 금액을 저장. number 유형으로, 주문한 상품의 총 수량과 단가를 곱한 값을 저장
데이터 타입 간의 관계 설정
원래 쇼핑몰의 ERD 는 이런 구조를 갖을 것이다. 데이터 타입 간에는 종종 관계가 필요하다. 예를 들어, 한 명의 사용자는 여러 개의 주문서를 가질 수 있고, 하나의 주문서에는 여러 개의 상품이 포함될 수 있다. 이러한 관계는 데이터베이스에서 매우 중요하며, Bubble에서는 이를 쉽게 설정할 수 있다.
- 사용자와 주문서: 사용자(User) 데이터 타입에는 List of Orders라는 필드를 추가하여 해당 사용자가 한 모든 주문서들을 연결할 수 있다.
- 주문서와 상품: 주문서(Order) 데이터 타입에는 List of Cart Items라는 필드를 추가하여, 이 주문서에 포함된 모든 상품을 연결할 수 있다.
데이터 타입 | 필드 이름 | 필드 유형 | 설명 |
User | 결제내역 | List of [주문서(Orders)]s | 사용자의 결제내역 |
관심상품리스트 | List of [상품(Product)]s | 사용자의 관심 상품 | |
이름 | text | 사용자 이름 | |
장바구니리스트 | List of [장바구니용 상품(Cart Item)]s | 사용자의 장바구니 리스트 | |
전화번호 | text | 사용자 전화번호 | |
text | 사용자 이메일 | ||
Modified Date | date | 수정일 | |
Created Date | date | 생성일 | |
Slug | text | 고유 슬러그 | |
배너 | img | image | 배너 이미지 |
Creator | User | 배너 생성자 | |
Modified Date | date | 배너 수정일 | |
Created Date | date | 배너 생성일 | |
Slug | text | 배너 고유 슬러그 | |
[상품(Product) | 가격 | number | 상품의 가격 |
상세설명 | text | 상품의 상세설명 | |
상품명 | text | 상품 이름 | |
상품이미지 | image | 상품 메인 이미지 | |
상품이미지s | List of images | 상품 추가 이미지 리스트 | |
Creator | User | 상품 생성자 | |
Modified Date | date | 상품 수정일 | |
Created Date | date | 상품 생성일 | |
Slug | text | 상품 고유 슬러그 | |
[장바구니용 상품(Cart Item) | 상품 | [상품(Product)] | 장바구니에 담긴 상품 |
수량 | number | 장바구니 상품 수량 | |
수량반영금액 | number | 장바구니 수량에 따른 금액 | |
Creator | User | 장바구니 생성자 | |
Modified Date | date | 장바구니 수정일 | |
Created Date | date | 장바구니 생성일 | |
Slug | text | 장바구니 고유 슬러그 | |
[주문서(Orders)] | 결제완료여부 | yes/no | 결제가 완료된 여부 |
상품리스트 | List of [장바구니용 상품(Cart Item)]s | 주문에 포함된 상품 리스트 | |
총액 | number | 주문 총액 | |
User | User | 주문한 사용자 | |
Created Date | date | 주문 생성일 | |
Modified Date | date | 주문 수정일 | |
Slug | text | 주문 고유 슬러그 |
Bubble과 같은 노코딩(No-Code) 툴을 사용하여 데이터 구조를 설계하고 관리하는 것은 개발 경험이 부족한 사용자나 빠른 프로토타이핑을 원하는 사람에게 여러 가지 장점이 있어 보인다.
2. 버블만의 장점 (개인적인 생각)
직관적이고 쉬운 데이터베이스 설계
- Bubble에서는 직관적인 인터페이스를 데이터 타입과 필드를 설계할 수 있어 비전문가도 쉽게 접근할 수 있다.
- 데이터베이스 구조를 변경하거나 필드를 수정하고 즉시 반영할 수 있다.
데이터 간의 복잡한 관계 설정 용이
- 관계형 데이터베이스 관리: Bubble에서는 다양한 데이터 타입 간의 관계를 쉽게 설정할 수 있다. 예를 들어, 사용자(User)와 주문(Order) 간의 관계를 설정하여 사용자의 주문 내역을 관리하는 등 복잡한 관계형 데이터 구조도 간편하게 구성할 수 있다.
- 참조 필드 설정: 데이터 타입 간의 참조(Reference) 필드를 설정하여, 특정 데이터가 다른 데이터 타입과 연결될 수 있도록 쉽게 설정할 수 있다.
유연한 데이터 관리
- 자동화된 데이터 관리: Bubble은 데이터베이스의 백엔드 관리 작업을 자동으로 처리한다. 따라서 사용자는 데이터 구조 설계에만 집중할 수 있으며, 백엔드 관리에 필요한 코딩 작업이 필요없다.
- 데이터 확장성: 데이터베이스 구조가 필요에 따라 쉽게 확장될 수 있다. 새로운 데이터 타입이나 필드를 추가할 때 기존 데이터와의 호환성을 유지하면서도 쉽게 확장할 수 있다.
확장성과 유연성
- Bubble은 API를 통해 다양한 외부 서비스와의 연동을 지원한다. 이를 통해 데이터를 다른 플랫폼과 쉽게 주고받을 수 있으며, 애플리케이션의 기능을 확장할 수 있다.
- 데이터베이스 구조와 애플리케이션의 워크플로우가 완벽하게 통합되어 데이터베이스에 저장된 데이터를 쉽게 호출하여 사용할 수 있으며, 이를 기반으로 다양한 기능을 구현할 수 있다.
빠른 프로토타이핑과 개발
- 즉각적인 피드백: 데이터 구조를 변경하거나 추가할 때 즉각적인 피드백을 받을 수 있어, 새로운 기능이나 구조를 신속하게 테스트하고 반영할 수 있다.
- 시간과 비용 절감: 개발자가 아닌 사용자도 손쉽게 데이터 구조를 설계하고 관리할 수 있으므로, 개발 비용과 시간을 크게 절약할 수 있다.