프로젝트명 :
지역중소기업 공동수요기술개발 프로젝트
카테고리 :
개발 > Web
기간 :
2021.01 – 2022.11
개발범위 :
O2O개발 및 프로젝트 서비스 서버 구축 및 웹서비스 통합 개발
개요 :
전주대학교 산학협력단에서 주관하는 지역중소기업 공동수요기술개발 사업에 학생연구원으로 참여하였습니다. 배정된 파트는 O2O팀 팀장으로 웹서비스와 관련된 업무들을 주로 담당하여 진행하였습니다.
주요 업무로는 지역중소기업에 필요한 O2O플랫폼 개발과 서비스 제공을 위한 AWS, Raspberry Pi 서버 구축과 함초박물관(홈페이지)팀 서포터하였습니다.
빅데이터 및 AI와 같은 이슈가 되는 기술들을 고려하여 python기반의 프레임워크인 Django를 채택하여 쇼핑몰 플랫폼 개발과 스마트팜 센서 모니터링 및 제어, 빅데이터 플랫폼 개발을 진행하였습니다.
기능
회원관리(회원가입,로그인,로그아웃,삭제)
상품관리(상품등록,수정,삭제)
게시물관리(등록,수정,삭제)
관리페이지
센서 모니터링 페이지
제어 페이지
계층형 관리 페이지
적용 기술:
개발 툴 : NotePad++,Putty,Filezila
데이터 처리 : MariaDB, Redis, MongoDB
언어 : Python, linux
통신 : MQTT, HTTP
웹서버 : Nginx(uWSGI)
프레임워크 :Django
템플릿 : Bootstrap5
배포 : 개인 Raspberry Pi4 웹서버 구축 및 AWS LightSail
기타
본 프로젝트를 진행하면서 웹 사이트의 전체적인 아키텍처를 생각해볼 수 있는 기회가 되었고 반복적인 부분을 줄이고 UI/UX를 이용하여 등록, 수정, 삭제가 가능하도록 처음부터 설계하는 방식이 보다 효율적인 개발과 이용자의 측면에서도 편리하다는 점을 알게 되었습니다. 또한 적절한 라이브러리, 템플릿을 사용하여 개발 능률을 올리고 안정적인 서비스를 제공하는 것 또한 중요한 사항이라는 것을 보았습니다.
스마트팜이 작동하기 위해 프로그램 서비스 면에서 전체 구성을 알아볼 수 있는 기회가 되었고 파트별로 개발해보면서 다양한 기술들이 필요하고 전문 지식들이 필요함을 보게 되었습니다.
웹 서비스를 제공해보면서 서버 구축에 있어서 유저가 요청하는 데이터의 시간과 양에 따라 처리를 어떤 방식으로 해야할지에 대한 고민을 해야 함을 기억하면서 앞으로의 개발에 있어서 보완해 나가야겠습니다.
팀장으로서 뿐만이 아닌 프로젝트 전체로 보았을 때 맡은 직무 또한 중요하지만 팀원들과 함께 공유하며 서로의 난제를 고민해 나갈 때 시너지를 알 수 있었습니다.
Django
본 개발에서 기반이 된 Django 는 Python Language 기반의 웹 프레임워크이다. 웹 개발에 필요한 다양한 요소들을 제공해줌으로써 개발 시간을 줄이고 다른 프레임워크에 비해 Python 라이브러리를 이용하여 확장할 수 있는 유용성이 있다.또한 ORM을 제공하여 SQL을 알면 더 도움이 되겠지만 잘 알지 못해도 데이터를 조작할 수 있도록 해준다.
주요 사용 라이브러리
auth django. contrib. auth 라이브러리는 사용자 인증에 필요한 기능을 담당하게 되는데 그 중의 주요 기능으로는 로그인, 로그아웃, 회원가입 등 회원 관리에 필요한 기능들을 제공해준다.
필드명 | 타입 |
id | integer |
username | CharField(128) |
password | CharField(30) |
first_name | CharField(30) |
last_name | CharField(30) |
CharField(254) | |
is_superuser | BooleanField |
is_staff | BooleanField |
is_active | BooleanField |
date_joined | DateTimeField |
last_login | DateTimeField |
social_django
SNS 등 주요 사이트들의 유저정보로 연동하여 회원가입 및 로그인할 수 있도록 기능을 제공해준다.(구글, 네이버, 카카오 등)
iamport
결제와 관련된 서비스를 제공한다. 은행과 다중 연동, 브랜드 맞춤형 결제, 데이터 분석, 간단한 API제공 및 관리자 모드 제공으로 개발해야 하거나 유지 보수를 해야 할 때 효율적이다.
<script type="text/javascript" src="js코드주소" ></script>
<script type="text/javascript" src="js코드주소"></script>
<script type="text/javascript">
$(function () {
var IMP = window.IMP;
IMP.init('가맹점 코드');
$('.charge-button').on('click', function (e) {
var type = $('.charge-type input:checked').val();
var merchant_uid ='merchant_' + new Date().getTime()
IMP.request_pay({
pg : 'html5_inicis',
pay_method : type,
merchant_uid : merchant_uid,
name : ‘상품명’,
amount : ‘가격’,
buyer_email : 'iamport@siot.do',
buyer_name : ‘구매자명’,
buyer_tel : '010-1234-5678',
buyer_addr : '주소',
buyer_postcode : '123-456',
m_redirect_url : 'https://www.yourdomain.com/payments/complete'
}, function(rsp) {
var form = document.userinput;
if ( rsp.success ) {
var msg = '결제가 완료되었습니다.';
form.action="성공 시 이동할 주소"
form.submit();
} else {
var msg = '결제에 실패하였습니다.';
msg += '에러내용 : ' + rsp.error_msg;
alert(msg)
}
});
});
});
</script>
django-mptt
계층형 카테고리를 작성, 사용할 수 있도록 Django에 해당하는 라이브러리를 제공해주는데 이를 통해 보다 간단하게 계층형 카테고리기능을 구현할 수 있었습니다.