Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unit3 #10

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 43 additions & 6 deletions Unit2/unit2.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,50 @@
## ❗️ 강의 수강 여부
수강한 강의에 체크표시 해주세요~

- [ ] 서버와 클라이언트
- [ ] 웹 서버와 어플리케이션
- [ ] IP & 도메인
- [ ] 프로토콜
- [ ] MSA & Docker & 쿠버네티스 (선택사항)
- [x] 서버와 클라이언트
- [x] 웹 서버와 어플리케이션
- [x] IP & 도메인
- [x] 프로토콜
- [x] MSA & Docker & 쿠버네티스 (선택사항)

<br>

## 2주차이지만 첫 스터디를 진행한 소감 혹은 피드백
다들 화이팅
Pull request, fork 방법에 대해 배워서 좋았습니다!

< 핵심 키워드 정리 >
1. Server & Client
서버: 검색 서비스를 제공하는 업체(네트워크상에서 ‘클라이언트’에게 정보를 제공하는 작업을 수행하는 컴퓨터 시스템) / 클라이언트: 웹브라우저
2. 웹 서버(WS)
HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버
정적 컨텐츠란 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠
예시) Apache, NginX 등
3. 웹 어플리케이션 (WAS)
Web Application Server: DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버
예시) Tomcat, JBoss, WebSphere
4. 프로토콜
통신할 때의 약속 (http, https, QUIC, DNS)
5. IP
Internet Protocol, OS에서 설정한 주소 ‘192.168.1.1’, ‘172.16.25.254’와 같이 32비트를 8비트씩 나누어 10진수로 표기
6. 도메인
웹사이트의 인터넷 주소
7. TCP vs UDP
Transmission Control Protocol: 데이터를 중요하게, 확실하게 전달할 때 통신하는 컴퓨터 사이에서 서로 확인하는 메시지를 보내면서 데이터를 전달하는 것 / User Datagram Protocol: 빠르게 전달하고 싶을 때(IP 전화나 동영상 전송, 시각 동기화 등)
8. Proxy
proxy = ‘대리’ → 클라이언트로부터 인터넷에 대한 통신을 대리로 수행하는 서버 (보안 기능 강화 → URL 필터링: ’위법성/범죄성이 높은 사이트’, ‘성인 사이트’ 등 / 안티 바이러스: ‘시그니처’로 저장 후 대조)
9. 이더넷
물리층과 데이터링크층을 모은 규격 → 이더넷은 네트워크층에서 받은 데이터(IP 패킷)에 프레임의 처음 위치를 나타내는 프리앰블(Preamble), 수신지나 송신원을 나타내는 이더넷 헤더, 전송 에러 체크에 사용하는 FCS(Frame Check Sequence)를 추가함으로써 ‘이더넷 프레임(Ethernet Frame)’을 만들고 LAN 케이블에 흐르는 전파 신호, 광케이블에 흐르는 광신호로 변환해 케이블로 보냄
10. MAC 주소
이더넷에서 NIC에 자동으로 할당되는 컴퓨터 식별 번호
예시) ‘a8:66:7f:04:00:80’에서 ‘a8:66:7f’는 벤더 코드(OUI = Organizationally Unique Identifier)로 IEEE에 의해 네트워크 기기 벤더별로 할당되어 있고 ‘04:00:80’의 경우 벤더 내 코드로 각 벤더 내부에서 네트워크 기기별로 할당되어 있음
11. 서브넷 마스크
subnet mask (32비트 값과 세 비트로 IP 주소를 바꿔 사용, ‘네트워크 부분’(네트워크 자체)과 ‘호스트 부분’(컴퓨터 자체)의 두 부분으로 구성된 것) → 표기 방법 : ‘10진수 표기’(32비트를 8비트씩 점으로 구분한 뒤 10진수로 표기)와 ‘CIDR 표기’(IP 주소 뒤에 슬래시와 서브넷 마스크의 ‘1’의 개수를 부여해서 표기)
예시) ‘172.16.1.1’ IP 주소에 ‘255.255.0.0’이라는 서브넷 마스크가 설정됐다면 ‘172.16.1.1/16’로 표기 (’172.16’이라는 네트워크의 ‘1.1’이라는 컴퓨터임)
12. 소켓 프로토콜
직역하면 ‘구멍, 연결’ → 소켓 프로토콜의 유형: ‘TCP/IP’와 ‘UDP/IP’
13. 패킷에 IP와 Port가 들어가야하는 이유
패킷: 컴퓨터가 데이터를 보낼 때 그 상태 그대로 보내지 않고 나누어 보내는 작은 단위 / 네트워크 통신에서 데이터를 목적지로 전달하고 특정 응용 프로그램이 해당 데이터를 받을 수 있도록 식별하기 위해서
14. SSH의 원리
리눅스 서버를 원격으로 조작할 때 사용하는 프로토콜 (Secure SHell) → SSH는 공개키 암호화 방식과 공통키 암호화 방식을 조합해서 통신을 암호화함 → 윈도우 PC에서는 ‘Tera Team’이나 ‘PuTTY’를, 리눅스 PC나 Mac에서는 ‘터미널’이라는 소프트웨어를 사용함. SSH로 서버에 접근하면 가장 먼저 사용자명과 비밀 번호를 입력함 → 사용자 인증에 성공하면 CLI(Command-line Interface) 화면이 표시되며 서버를 원격으로 조작 가능함
15. 서버 보안을 위해서 어떤 부분을 신경써야 할까?
서버 운영 체제 업데이트, 보안 패치, 방화벽 설정, 백업, 강력한 인증 및 암호화
16 changes: 11 additions & 5 deletions Unit3/unit3.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,42 @@
## ❗️ 강의 수강 여부
수강한 강의에 체크표시 해주세요~

- [ ] 리눅스
- [ ] URL,URI
- [ ] AWS
- [ ] 프록시 서버
- [ ] HTTPS
- [x] 리눅스
- [x] URL,URI
- [x] AWS
- [x] 프록시 서버
- [x] HTTPS

<br>

## ❗️ 3주차 과제
1. AWS EC2 인스턴스 생성
- 수행한 화면 혹은 내용을 작성해 주세요
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/171b4f74-ea3d-44a7-aa21-6d0db0e158e7)

<br/>

2. ssh 사용하여 ubuntu 인스턴스 외부 접속
- 수행한 화면 혹은 내용을 작성해 주세요
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/02effe08-166e-42af-aa81-de75c55047dd)

<br/>

3. Nginx 패키지 설치 후 http 외부 접속
- 수행한 화면 혹은 내용을 작성해 주세요
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/2798836d-538e-4081-bdfa-efb0b4bfa755)

<br/>

4. 가비아 or 후이즈에서 domain 연결 (.shop 도메인)
- 수행한 화면 혹은 내용을 작성해 주세요
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/832f2808-c695-4ae2-a08a-3de075def9a7)

<br/>

5. Redirection 적용 (IP to Domain)
- 수행한 화면 혹은 내용을 작성해 주세요
어떻게 하는지 모르겠습니다
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/def0df3c-dcf4-4bdb-84fb-490bcc1df66a)

<br/>
92 changes: 92 additions & 0 deletions unit4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
### ⭐️ 4주차 과제 제출 ⭐️

## ❗️ 강의 수강 여부
수강한 강의에 체크표시 해주세요~

- [o] 데이터베이스
- [o] 데이터베이스_MySQL
- [o] 리눅스에 MySQL 설치하기

<br>

## ❗️ 3주차 과제
1. 관계형 데이터베이스 이론적으로 이해하기
테이블로 이루어져 있음. 이 테이블은 키와 밸류의 관계를 나타냄. -> 데이터의 종속성을 관계로 표현하는 것이 특징
MS-SQL, MySQL, MariaDB, Oracle 등
열(column)
각각의 열은 유일한 이름을 가지며, 자신만의 타입을 가진다. 이러한 열을 필드(field) 또는 속성(attribute)라고 부른다.

행(row)
행은 관계된 데이터의 묶음을 의미한다. 한 테이블의 모든 행은 같은 수의 열을 가진다.
이러한 행은 튜플(tuple) 혹은 레코드(record)라고 한다.

값(value)
테이블은 각각 행과 열에 대응하는 값을 가진다. 이러한 값은 열의 타입에 맞는 값이어야 한다.

키(key)
키는 하나의 테이블을 구성하는 여러 열 중에서 특별한 의미를 지닌 하나 또는 여러 열의 조합을 의미한다. 기본키(primary key), 후보키(candidate key), 외래키(foreign key), 복합키(composite key)등이 있다.

관계(relationship)
테이블 간의 관계는 관계를 맺는 테이블 수에 따라 나뉜다.관계형 데이터베이스에서는 이러한 관계를 나타내기 위해 외래키를 사용한다. 외래키 는 한 테이블의 키 중에서 다른 테이블의 행을 식별할 수 있는 키를 의미한다.

일대일(one to one) 관계
일대다(one to many) 관계
다대다(many to many) 관계

스키마(schema)
스키마는 테이블을 디자인하기 위한 청사진. 이러한 스키마는 테이블의 각 열에 대한 항목과 타입뿐 아니라 기본 키와 외래 키에도 나타내야 함.
<br/>

2. 원하는 서비스(당근마켓, 인스타그램 등) 분석하기
- 원하는 서비스를 하나 타겟팅 후 페이지 4장가량을 선정하고 (캡쳐본 올리기) 데이터베이스에 들어갈 내용을 적어주세요.
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/40b38cd0-47dd-4c47-9dfc-0469bdad9010)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/5f98d3df-ca9a-4f19-9f0e-598a7586b6bd)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/124a95ca-cfb6-4987-a316-6f0e62a7a4c3)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/210c0f79-8cee-4dcd-99ba-92d7f027f96c)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/2cf1e2b6-bb98-4be8-b4aa-33d221400e2d)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/90852190-18b2-4c37-8c30-bc7ebd7edbac)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/f28d0b3f-085a-418b-98a9-0fec3c70af86)


1. 로그인 페이지:
* entity: Users
* 속성: UserID, Password, Email, SocialLoginType
* 기능: 사용자 로그인 정보 확인 및 소셜 로그인 연동
2. 메인 페이지:
* entity: Products, Promotions
* 속성: ProductID, Name, Price, DiscountRate, PromotionDetails
* 기능: 제품 및 프로모션 정보 표시, 다양한 할인 혜택 및 추천 제품 목록 제공
3. 사용자 프로필 페이지:
* entity: Users, Wishlist, Posts
* 속성: UserID, Username, ProfileImage, WishlistID, PostID
* 기능: 사용자 프로필 정보, 사용자의 위시리스트, 게시물 조회
4. 상품 목록 페이지:
* entity: Products, Categories
* 속성: ProductID, Name, Price, CategoryID, ImageURL, StockStatus
* 기능: 카테고리별 제품 목록 제공, 제품 검색 및 필터링
5. 상품 상세 페이지:
* entity: Products, ProductDetails, Reviews, Comments
* 속성: ProductID, Description, Price, DiscountRate, ReviewID, CommentID
* 기능: 상품 상세 정보, 리뷰, 사용자 댓글 및 평점 표시
6. 리뷰 section:
* entity: Reviews
* 속성: ReviewID, UserID, ProductID, Rating, Content, DatePosted
* 기능: 상품에 대한 사용자 리뷰 및 평점 표시
7. 문의 section:
* entity: Questions, Answers
* 속성: QuestionID, AnswerID, UserID, ProductID, Content, DatePosted
* 기능: 상품 관련 질문 및 답변 제공
<br/>

3. ERD 설계하기
- 2번에서 진행한 내용을 바탕으로 직적 ERD 제작 툴을 사용해 작성해봅시다. (완성 후 캡쳐본 올리기)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/4978393f-1978-485c-a21e-d5430c93c9c4)

<br/>

4. AWS RDS 구축하기
- ERD를 바탕으로 내가 기존에 만들어둔 AWS에서 RDS를 만들어 봅시다. (완성 후 캡쳐본 올리기)
![image](https://github.com/mm8267/2024_Server_study_Basic/assets/144704798/c20f55f9-2eec-42ef-9c7e-b8dd7d8c36e7)

아직 작업 중
<br/>
42 changes: 42 additions & 0 deletions unit5
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
### ⭐️ 6주차 과제 제출 ⭐️

## ❗️ 강의 수강 여부
수강한 강의에 체크표시 해주세요~

- [x] HTTP 통신
- [x] API
- [x] 데이터 포맷 - CSV, JSON, XML

<br>

## ❗️ notion에 키워드 정리 완료 여부
내가 notion에 키워드를 정리를 완료한 경우 체크표시 해주세요~

- [ ] 키워드 정리 완료

<br>

## ❗️ 6주차 과제
1. 개발환경 구축하기 - nodejs 설치 및 사전에 올려둔 템플릿 적용하기
(완료된 내용 켬쳐본 올리기)

<br/>

2. 자신이 설계한 DB와 연동해서 API설계 (CRUD)
(완료된 내용 켬쳐본 올리기)

<br/>

3. Postman으로 API 테스트
(완료된 내용 켬쳐본 올리기)

<br/>

4. API Sheet 작성
(완료된 내용 켬쳐본 올리기)


<br/>