: 3개의 논리적, 물리적인 컴퓨팅 계층을 분리한 소프트웨어 어플리케이션 아키텍처
WEB(Frontend Tier) - WAS(Backend Tier) - Database(DB Tier)
클라이언트 계층, 어플리케이션 계층, 데이터베이스 계층이 있으며
모든 통신은 어플리케이션 계층을 통과하며 클라이언트와 데이터베이스 계층은 직접 통신할 수 없습니다.
쿠팡에서 물건을 주문한다고 가정합시다.
클라이언트가 브라우저에서 쿠팡사이트에 연결을 하고자 요청하면 어플리케이션 계층에서는 웹사이트를 Response해주며 Database에서는 계정 정보나 이전 구매내역 등을 가져와서 WAS에서 화면에 뿌려줍니다. 구매하기 버튼을 클릭하면 쿠팡의 어느 서버 컴퓨터에 고객정보, 주문내역을 포함한 메시지를 보내며 WAS에서 실직적인 결제 로직을 실행하여 DB에 업무를 넘기거나 참조를 하는 기능을 합니다.
참고: https://www.ibm.com/kr-ko/topics/three-tier-architecture
https://youtube.com/SuperSimpleDev

CRUD는 데이터베이스 명령으로 작성하기, 보여주기, 수정하기, 삭제하기를 묶어서 CRUD라고 합니다.
회원가입 기능으로 예를 들면
이외에도 게시물 작성하기, 보여주기, 수정하기, 삭제하기로 적용할 수 있고 댓글 CRUD도 있다.
Rest API에서는 POST, GET, PUT/PATCH, DELETE가 비슷한 역할을 합니다.
<html>
<head>
<title>Form test</title>
</head>
<body>
<form action="http://127.0.0.1:8000/accounts/register/" method="post">
<input type="text" name="username" placeholder="사용자 이름">
<input type="text" name="email" placeholder="이메일">
<input type="text" name="nickname" placeholder="닉네임">
<input type="password" name="password" placeholder="패스워드">
<input type="password" name="password2" placeholder="패스워드 확인">
<input id='btnSubmit' type="submit" value="제출">
</form>
</body>
</html>
function signUp() { // 회원가입하는 함수
var id = document.getElementById("id").value;
var pw = document.getElementById("pw").value;
var confirm_pw = document.getElementById("confirm-pw").value;
var display_name = document.getElementById("display-name").value;
var pattern_spc = /[~!@#$%^&*()_+|<>?:{}]/; // 특수문자
var blank_pattern = /[\s]/g; // 공백
console.log(`id: ${id}, pw: ${pw}, confirm_pw: ${confirm_pw}, display_name: ${display_name}`); // 확인
if(id.length > 12 || blank_pattern.test(id)) {
alert("아이디 길이 or 공백 포함!"); // 아이디 틀림
return 0;
}
else {
if(pw.length < 8 || !(pattern_spc.test(pw))) {
alert("비밀번호 길이 or 특수문자 미포함!"); // 비밀번호 틀림
return 0;
}
else{
if(pw != confirm_pw) {
alert("비밀번호가 일치하지 않습니다!"); // 비밀번호 확인 틀림
}
else {
alert("회원가입 완료!"); // 회원가입 완료!
console.log("회원가입 완료!");
var elem = document.createElement('ul');
elem.innerHTML =
`<li>--------------------------</li>
<div class="createMember">
<input type="checkbox" class="checkBox">
<div>
<li>이름: ${display_name}</li>
<li>아이디: ${id}</li>
<li>비밀번호 : ${pw}</li>
</div>
</div>`;
document.querySelector('.check_data').append(elem); // 회원가입이 완료되면 회원조회에 추가
var id = document.getElementById("id").value = '';
var pw = document.getElementById("pw").value = '';
var confirm_pw = document.getElementById("confirm-pw").value = '';
var display_name = document.getElementById("display-name").value = ''; // 회원가입 완료 후 입력되어 있던 값들 사라지게 함
}
}
}
}