본문 바로가기

백엔드14

DDD (Domain-Driven Design) 도메인 주도 설계(Domain-Driven Design, DDD)은 소프트웨어 개발 방법론과 설계 철학의 한 형태로, 복잡한 소프트웨어 시스템을 개발하는 데 도움이 되는 개념과 원칙을 제공합니다. 에릭 에반스(Eric Evans)가 2003년에 그의 책 "Domain-Driven Design: Tackling Complexity in the Heart of Software"에서 소개한 개념입니다. DDD의 핵심 아이디어와 개념은 다음과 같습니다: 도메인: DDD는 소프트웨어의 핵심 비즈니스 영역을 "도메인"이라고 부릅니다. 도메인은 특정 비즈니스 문제를 해결하는 데 중요한 역할을 하는 모든 개념, 규칙, 프로세스 및 데이터를 포함합니다. 도메인 모델: DDD에서 가장 중요한 개념 중 하나는 "도메인 모델.. 2023. 10. 17.
http, https 차이점에 대해 설명해주세요 HTTP와 HTTPS는 둘 다 인터넷을 통해 정보를 주고받는 프로토콜인데, 주요한 차이점은 보안과 관련이 있습니다. HTTP (HyperText Transfer Protocol): HTTP는 정보를 전송하는 규칙 중 하나로, 웹 페이지를 불러오거나 데이터를 주고받을 때 사용됩니다. 데이터 전송 시 암호화되지 않기 때문에 정보가 평문으로 전송됩니다. -웹 페이지의 내용, 이미지, 비디오 등을 요청하고 응답 받을 때 사용됩니다. 이러한 특성 때문에 민감한 정보(비밀번호, 개인정보 등)를 주고받을 때 보안 위험이 있을 수 있습니다. HTTPS (HyperText Transfer Protocol Secure): HTTPS는 HTTP의 보안 버전으로, 정보를 암호화하여 안전하게 전송하는 프로토콜입니다. HTTPS.. 2023. 8. 28.
TCP/UDP에 대해서 설명해주세요 TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)는 둘 다 인터넷 프로토콜 중 하나로, 컴퓨터 간 통신을 위해 사용됩니다. 그러나 두 프로토콜은 서로 다른 특징과 동작 방식을 가지고 있습니다. TCP (Transmission Control Protocol): 연결 지향적인 프로토콜로, 데이터를 주고받을 때 신뢰성을 보장합니다. 데이터를 패킷 단위로 분할하고 보내기 전에 목적지와 연결을 설정합니다. 연결 설정 과정에서 3-way handshake가 이루어집니다. 데이터 전송 중에도 패킷의 순서를 보장하고, 재전송과 흐름 제어를 통해 안정적인 통신을 지원합니다. 데이터가 제대로 도착하지 않으면 재전송을 시도하므로 데이터 전달의 신뢰성이 높습.. 2023. 8. 28.
쿠키, 세션의 개념과 차이 쿠키와 세션은 웹 개발에서 사용되는 두 가지 주요 개념으로, 사용자 인증과 상태 관리를 위해 사용됩니다. 아래에서 각 개념을 설명하고 그들 간의 차이를 알려드리겠습니다. 쿠키 (Cookies): 쿠키는 클라이언트 측에 작은 데이터 조각을 저장하는 방법입니다. 웹 브라우저가 웹 서버에 요청을 보낼 때, 서버는 쿠키를 포함한 응답을 보내며 클라이언트의 브라우저에 저장합니다. 그런 다음 해당 웹 사이트에 대한 후속 요청에서 이 쿠키는 브라우저와 서버 간에 정보를 주고받는 데 사용됩니다. 쿠키의 주요 특징: 클라이언트 측에 저장되므로 브라우저가 닫혀도 지속될 수 있습니다. 제한된 용량을 가지고 있어서 대용량 데이터를 저장하기에는 부적합합니다. 보안에 취약할 수 있으며, 중요한 정보를 저장하기보다는 식별자나 세션.. 2023. 8. 24.
브라우저의 작동방식 웹 브라우저의 작동 방식은 웹 페이지를 요청하고 표시하는 과정을 나타냅니다. 아래는 브라우저가 웹 페이지를 가져오고 렌더링하는 과정을 간단히 설명한 것입니다. 사용자 입력 및 주소 입력: 사용자는 주소 표시 줄에 웹 페이지의 URL(Uniform Resource Locator)을 입력하거나, 이미 방문한 웹 페이지의 링크를 클릭하여 페이지 요청을 시작합니다. DNS 조회: 브라우저는 입력된 URL을 기반으로 해당 웹 서버의 IP 주소를 얻기 위해 DNS(Domain Name System) 조회를 수행합니다. DNS는 도메인 이름을 IP 주소로 변환하는 역할을 합니다. 서버 연결 및 요청 전송: 브라우저는 얻은 IP 주소로 해당 서버와 TCP/IP 연결을 설정하고, HTTP(Hypertext Transfe.. 2023. 8. 24.
CORS(Cross Origin Resource Sharing)란? CORS(Cross-Origin Resource Sharing)는 웹 브라우저에서 동작하는 보안 기능으로, 다른 도메인(origin) 간에 리소스를 공유하는 것을 제어하는 메커니즘입니다. 기본적으로 브라우저는 보안 상의 이유로 스크립트나 AJAX 요청 등으로 다른 도메인의 리소스에 접근을 제한하는데, 이를 허용하고 관리하기 위해 CORS를 사용합니다. CORS의 주요 원칙: Same-Origin Policy(동일 출처 정책): 웹 브라우저는 보안을 위해 같은 출처(origin)에서만 요청을 보낼 수 있도록 제한합니다. CORS 요청: 다른 출처로부터 리소스를 요청하는 경우, 브라우저는 요청 헤더에 Origin을 포함하여 보냅니다. CORS 응답: 서버는 요청의 Origin에 따라 응답 허용 여부를 결정하.. 2023. 8. 22.
Primary Key, Foreign Key란? Primary Key(기본 키)와 Foreign Key(외래 키)는 관계형 데이터베이스에서 중요한 개념입니다. Primary Key (기본 키): 기본 키는 데이터베이스 테이블 내에서 각 행을 고유하게 식별하는 열(column)입니다. 중복되지 않는 값으로 구성되며, 테이블의 주요 식별자 역할을 합니다. 기본 키를 통해 데이터베이스에서 각 행을 신속하게 찾을 수 있습니다. 주로 숫자나 문자열로 표현되며, 테이블 내에서 유일해야 합니다. Foreign Key (외래 키): 외래 키는 다른 테이블의 기본 키를 참조하는 열(column)입니다. 이를 통해 두 테이블 간의 관계를 구축할 수 있습니다. 외래 키는 한 테이블의 행이 다른 테이블의 행과 연결되는 매개체 역할을 합니다. 관련된 정보를 검색하거나 연관성.. 2023. 8. 21.
RDBMS의 정규화 관계형 데이터베이스 관리 시스템(RDBMS)의 정규화는 데이터를 효율적으로 구성하고 중복을 최소화하기 위한 과정입니다. 데이터베이스의 테이블을 더 작고 관련성 있는 부분으로 분해함으로써 데이터 일관성과 성능을 향상시키는 것을 목표로 합니다. 정규화는 주로 데이터 이상 현상을 방지하고 데이터 중복을 줄여 데이터 일관성을 보장하기 위해 수행됩니다. 정규화의 단계: 제1 정규화 (1NF): 테이블 내 각 컬럼은 반드시 하나의 값만을 가지며, 중복 데이터를 허용하지 않습니다. 이 단계에서는 반복되는 그룹을 테이블로 분리합니다. 제2 정규화 (2NF): 부분 종속성을 제거하기 위해 테이블을 분해합니다. 테이블 내의 모든 컬럼은 기본 키에 완전히 종속되어야 합니다. 제3 정규화 (3NF): 이행적 종속성을 제거하여.. 2023. 8. 21.
MVC 패턴이란? MVC(Model-View-Controller) 패턴은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 애플리케이션의 구조를 분리하여 관리하기 위한 방법입니다. MVC 패턴은 소프트웨어의 유지 보수성과 확장성을 향상시키기 위해 사용됩니다. 1. 모델 (Model): 모델은 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. 데이터의 상태를 관리하고 조작하는 역할을 하며, 데이터의 변경을 감지하여 이에 따른 로직을 수행합니다. 모델은 데이터베이스와 상호 작용하거나 파일에서 데이터를 읽고 쓰는 등의 작업을 수행합니다. 2. 뷰 (View): 뷰는 데이터의 시각적 표현을 담당합니다. 사용자에게 데이터를 보여주는 역할을 하며, 사용자 인터페이스를 구성합니다. 사용자가 보는 화면의 레이아웃과 디자인을 정의하.. 2023. 8. 21.
네 번째 미니 프로젝트: 팬명록 이번 프로젝트는 팬명록 만들기이다 좋아하는 연예인의 팬명록을 만드는 것인데 닉네임, 응원댓글을 기록하면 아래로 기록들이 달리는 사이트이다 결과 먼저 보기 대표사진 삭제 사진 설명을 입력하세요. 나는 좋아하는 연예인이 없어서 친한 친구가 좋아하는 연예인(비투비 이창섭씨)을 대상으로 하여 만들었다 :) 이번 프로젝트에도 사용한 언어는 python이며 프레임워크는 flask를 사용하였다 이전 포스트와 마찬가지로 주요 코드를 공유하는 것으로 포스트를 마치고자 한다 python from flask import Flask, render_template, request, jsonify app = Flask(__name__) from pymongo import MongoClient import certifi ca = .. 2023. 5. 11.
두 번째 미니프로젝트 - 영화 기록하기 이번에는 내 생애 최고의 영화들을 기록하는 미니 프로젝트를 만들었다 영화 URL, 별점, 코멘트를 적으면 기록되는 웹사이트이다 결과물 먼저 보시라! 만드는 순서 1.가상환경 만들기 python3 -m venv venv 2.파일과 폴더 만들기 app.py 파일 templates 폴더 그 안에 index.html 파일 3.설치하기 flask, pymongo, dynspython reuqests (크롤링), bs4 (크롤링) 터미널에 pip install flask pymongo dnspython requests bs4 치고 엔터 *쉼표 없이 띄어쓰기로 쳐도 됨 4.유용한 태그 웹스크래핑으로 URL에서 페이지 정보를 가져올 때 유용한 태그 = meta 태그 5.본격적인 API 만들기 1) 데이터 쌓기 2) 데.. 2023. 5. 11.
첫 번째 미니프로젝트 - 화성땅 공동구매 이번 포스트와 다음 포스트는 실제로 미니 프로젝트를 만든 시간이었다 즉, 나만의 웹페이지를 만들어보는 시간이다 결과물부터 봐보자! 이번 프로젝트는 화성에서 땅을 공동구매하기 위해 주문하는 웹페이지이다 주문 상세에는 이름, 주소, 평수이며 주문하기를 누르면 아래에 주문자의 리스트가 기록되는 사이트이다 만드는 순서 1.app.py 만들기 2.가상환경 만들기 남이 만든 라이브러리를 사용할 것이기 때문에 그것을 담을 환경이 필요하니 터미널에서 venv 만들기 터미널에 $ python3 -m venv venv 치고 엔터 (맥용) (윈도우용) $ python -m venv venv 3.templates 폴더 생성 그 안에 index.html 생성 4.flask 설치 터미널에서 $ pip install flask치고.. 2023. 5. 11.
웹개발 종합반 4주차 (2) 저번 포스트에서는 프론트엔드에서 API, 데이터를 받는 것을 배웠다 웹개발 종합반 4주차 (1) 4주차에서는 백엔드 과정을 배웠다 즉, 서버 만들기를 배웠다 두근두근 다만 백엔드 과정이 꽤나 양이 많아 포스트를 4개로 나누어 포스팅하였다 마지막 포스트 2개는 실제로 미니 프로젝트를 earlgrey-is-here.tistory.com 4주차에서는 백엔드 과정을 배웠다 즉, 서버 만들기를 배웠다 두근두근 다만 백엔드 과정이 꽤나 양이 많아... 데이터를 받을 때 fetch를 사용해 보았는데 프론트엔드(.html 등)와 벡엔드(.py 등)가 소통하는 방법은 여러 가지가 있다고 한다 그중에 우리는 GET, POST 방식 등을 배웠다 이번 포스트에서는 두 방식을 배운 내용을 공유하고자 한다 GET 요청의 특징은 .. 2023. 5. 11.
웹개발 종합반 4주차 (1) 4주차에서는 백엔드 과정을 배웠다 즉, 서버 만들기를 배웠다 두근두근 다만 백엔드 과정이 꽤나 양이 많아 포스트를 4개로 나누어 포스팅하였다 마지막 포스트 2개는 실제로 미니 프로젝트를 만들어보았다! 기대하시라! 꺄 서버를 만들기 위해서는 라이브러리 = 프레임워크가 필요하다 우리는 백엔드 서버를 위해 Flask라는 프레임워크를 사용했다 Flask 프레임워크로 서버 만들기 1.원하는 폴더로 이동한다 2.app.py를 만든다 3.터미널을 켠다 4.가상환경을 잡는다 터미널에서 python3 -m venv venv치고 엔터 *venv는 프로젝트별로 라이브러리를 담아두는 통 5.Flask 설치하기 터미널에 pip install flask치고 엔터 [Flask 시작 코드] from flask import Flask.. 2023. 5. 11.