[팀 프로젝트] 서브킹 프로젝트

KangHo Lee's avatar
Dec 30, 2024
[팀 프로젝트] 서브킹 프로젝트
SubKing 프로젝트
2024.10.01 ~ 2024.10.14 (약 2주)
총 4명

프로젝트 깃허브 링크

<SubKing Project 개요>

  • 햄버거의 속재료를 고객이 원하는 재료만으로 만든 햄버거 판매 웹페이지

1. 프로그램 주요 기능

  • 고객이 원하는 재료를 선택해서 구성한 햄버거 주문 시스템
  • 체중 관리를 하는 고객을 위해 설정한 열량에 맞춘 속재료가 들어간 햄버거 조합을 추천해주는 기능
  • 관리자 아이디로 로그인할 경우 재료 관리와 추가, 점포 매출을 확인할 수 있는 기능

2. 학습 목표

  • 프론트엔드(html, js, css)와 백엔드(servlet/jsp)와 데이터베이스(mysql)를 결합한 동적 웹 페이지 생성

<프로젝트 설계>

1. 필요한 기능 토의

  • 프로젝트 컨셉이 정해지고 팀원들이 모여서 필요한 기능을 엑셀에 정리
  • 필수 기능과 우선순위를 부여하고 팀원들에게 작업을 분배

2. 와이어 프레임 제작

  • 파워포인트를 이용 header와 body, footer구성을 알려주는 와이어프레임을 만들어서 팀원들에게 기본적인 디자인을 숙지시킨 후 본격적인 작업 시작

3. 담당 업무

  • 회원의 주문 목록 조회 기능, 과거에 주문한 햄버거를 새 장바구니에 담는 기능 구현
  • 회원가입, 로그인, 로그아웃, 아이디 찾기, 비밀번호 찾기, 관리자 로그인, 관리자 전용 메뉴
  • 메인화면 이미지 슬라이드

<프로젝트 이야기>

1. 비밀번호 암호화 및 비밀번호 찾기 기능 구현

  • 암호화 해시 함수인 bcrypt의 자바용 구현체(라이브러리)를 활용, 비밀번호를 암호화한 후 db에 저장하는 기능 구현
  • 비밀번호 찾기 기능 구현 중 문제 발생
    • 암호화 해시 함수의 특성상 암호화된 비밀번호와 사용자가 입력한 비밀번호 사이 비교 가능, 암호화된 비밀번호의 복호화는 불가능
  • 비밀번호 찾기 기능 대신 비밀번호 재설정 기능으로 재구현

2. 이전에 주문한 햄버거 조합을 새 장바구니에 담는 기능 구현

  • 유저정보, 주문이력, 햄버거 조합, 장바구니 테이블 등 관계가 구성된 여러 테이블 조작 필요
  • 각 테이블간 관계에 따라 외래키를 설정하여 참조 무결성 구성
  • 각 정보에 집중한 database 지속성 repository 객체 구현
  • 위 객체를 제어 및 조작하여 서비스 로직에 따라 종합된 정보를 구성하는 service 객체 구성
  • 필요한 정보만을 담은 DTO 객체로 정보 전송
→ 얻는 결과
  • 각 주제의 복잡함을 해결한 결과 시스템이 유연하고 확장 가능

3. 열량에 맞춘 햄버거 조합 추천 알고리즘 제작 중 겪은 어려움

  • 초기 알고리즘
    • 재료 목록에서 빵, 야채, 패티, 소스, 치즈 순으로 1개씩 랜덤 선택 후 남은 열량에 맞춰 재료를 랜덤으로 추가
  • 웹 페이지 실행 테스트 중 과한 연산 시간으로 인한 서버 과부하 확인
  • 남은 열량에 따라 패티, 치즈, 소스, 야채를 차례로 추가하는 새로운 알고리즘 구현
  • 추가로 입력받는 열량 숫자에 제한(700kcal~1500kcal), 추천하는 햄버거 조합 개수도 10개로 제한
→ 얻는 결과
  • 서버 부하 감소 및 웹 페이지 정상 작동을 확인

4. 주소 API 적용

  • 주소 설정 시 정확성 향상과 입력 시간 절약을 위해 사용자에게 익숙한 외부 웹 api를 사용
  • 주소기반산업지원서비스 홈페이지에서 승인키를 신청
  • 가이드로 제시된 소스 코드를 활용, 회원가입 주소 입력란과 주문 시 배달 주소 입력란에 팝업으로 도로명 주소 검색 기능을 구현
 
Share article

devleekangho