Computing Paradigm의 변천과 Web 기술의 발전 IT 기술은 개발자 편의성을 위주로 발전 1950년대 ~ 60년대 : 초기 컴퓨팅 1970년대 : 절차중심적 프로그래밍(Cobol, Fortan, C, ...) 1980년대 : 정보공학기법(DBMS)
### **요청(Request)** 1. **GET 방식** - URL을 통해 서버에 데이터를 요청하는 방식 - Header : 브라우저 정보, 쿠키, 언어 설정 등 다양한 메타데이터 포함 - Body : GET 방식에서는 데이터가 URL 쿼리 스트링에 포함되기 때문
시멘틱 태그가 나타나는 시점부터 HTML5라고 부름 시멘틱 태그는 오히려 웹 개발의 어려움을 가중시킬 수 있음 시멘틱 태그가 없다고 HTML5가 아니다 > 시멘틱 태그는 HTML5의 일부일 뿐 HTML5의 전부가 아니다 java는 웹 서버를 포함하여 다양한 용도로
switch~case는 if~else문보다 실행 속도가 훨씬 빠름 각 케이스를 수트 형태로 구분하여 실행을 함 if~else는 boolean 판별을 함 > 실행 속도가 느림 if 타입체크 타입캐스팅 속도를 매우 느리게함, 성능저하 for문 
프로퍼티 프로퍼티는 = 이 아닌 : 을 사용 객체에 .을 찍어 참조 const도 let처럼 내용 변경 가능, const는 변수에 할당된 메모리 주소를 변경 불가한거지 변수 안에 있는 내용은 변경 가능하기 때문 객체.프로퍼티 혹은 객체["프로퍼티"]로 호출 가능

Node.js의 express 모듈과 부트스트랩을 이용해 간단한 홈페이지를 만들어 보았다

## OOSD **객체 지향 소프트웨어 개발 과정** 객체지향기술을 사용하여 소프트웨어를 개발하고자 한다면 OOSD를 사용해야 함 ### 소프트웨어의 방법론 - 사전적 의미로는 경험에 의해 얻어진 방법, 규칙, 가정들의 집합 - 소프트웨어 개발에서 방법론은 개발

## Node.js에서 MySQL을 연동하여 게시판 만들기 **1. 프로젝트 구성** ``` npm init npm i express npm i -g nodemon (이미 깔려있다면 생략) ``` **2. server.js 생성** ``` const express

JSON(JavaScript Object Notation) 형태의 데이터를 저장mongodb+srv://admin:1234@cluster0.ou9gktz.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0mongodb
## 몽고DB와 Node.js 연결 ### **Connect를 눌러 Drivers 선택** 

## 저장 **enter.html** ``` app.post('/save', (req, res) => { console.log(req.body); mydb.collection('post').insertOne({ titl

server.js{data:result} JSON 값을 가지고 realtycontent.ejs에 랜더링realtycontent.ejshidden input 태그로 JSON 형식의 data를 stringify()로 JSON 문자열로 바꿔 value 속성에 저장script
# SSR과 CSR ## 렌더링 HTML, CSS, JavaScript 등 개발자가 작성한 문서가 브라우저에서 출력되는 과정 1. DOM 트리 생성, CSSOM 트리 생성 2. 렌더링 트리 생성 3. 레이아웃 단계 4. 페인팅 단계 5. 브라우저에 렌더링
## 세션 ### 세션 동작 원리 **1. 서버와 서블릿 가동** - 서버가 가동될 때 서블릿 객체가 일반 메모리 영역에 하나 생성 - 이 서블릿 객체는 상속되는 모든 데이터도 함께 생성하며, application scope에 속함 - 서버 가동 시 객체

pw + salt를 붙여 암호화, salt는 물리적으로 다른 db에 저장해야함예를 들어 사용자 정보를 mongoDB에 저장한다면 salt는 mySQL에 저장salt는 사용자마다 다르게 랜덤하게 발행해야 함mysql에 salt 값 저장이후 로그인 페이지에서 로그인 요청
express mongodb 드라이버 mysql2 드라이버 설치
최근 연구에 따르면 비밀번호의 복잡성보다는 **길이**가 보안성을 높이는데 더 중요하다고 밝혀짐 # CSRF 공격 방지 CSRF(Cross-Site Request Forgery)는 사용자의 의지와는 상관없이 **공격자가 사용자의 권한을 도용하여 특정 요청을 서버에


node_modules의 최신 버전을 무시하고 옛날 버전을 강제로 다운받을때front개발도 react 개발하기 위해 node_modules 필요npm start 시 react가 동작서버에 요청이 아닌 다시 페이지 자체에서 rendering서버에서 json형태로 응답하면
백엔드 서버와 프론트 엔드 서버간의 세션 공유 안되는 문제

프로젝트 보안 고려사항, 보강 시나리오 2를 목표
jwt 토큰을 복사해 jwt.io에 디코드 가능자신의 정보라 안심할 수도 있지만, 서버 측 salt를 알고 있는 상태에서(bycrpt같이 salt를 노출시키는 알고리즘으로 salt 노출 가능) admin의 jwt 토큰을 jwt.io에서 인코드, 결과값(admin의 jw
https://jake2580.notion.site/Node-js-Bank-Miniproject-3-0b7555f3e8084e2ca0030550321d9f8c

github에 있는 branch가 master이다HEAD > 최종 확정본마지막 커밋 메세지test 브랜치를 push 하지 않아 로컬에만 test 브랜치가 존재하는 상황git status 현재 상황 꼭 확인하기test 브랜치가 없어 fatal 오류가 뜸git branch
현재는 TCP/IP 프로토콜을 중심으로 네트워크 기술이 통합하고 표준화됨드라이버 : 하드웨어 관련된 통신 프로그램어플리케이션+시스템 운영체제+디바이스마다의 드라이버연결이 돼서 데이터 패킷을 받아 패킷을 통신망으로 보냄, 패킷을 다시 웹 서버(어플리케이션)이 받아 패킷을

디지털 신호 증폭 : 리피터아날로스 신호 증폭 : 앰프MAC 주소를 중복되지 않게 IEEE에서 관리(생산 시 고유하게 발행)2계층 주소는 mac 주소6바이트 사용 헥사단위 3바이트씩 2개로 나눠서앞 3바이트는 제조업체 고유id뒷 3바이트는 product ID결론적으로

inet6 옆의 :: 표시 > 연속된 숫자가 0, ::1/128은 0.0.0.1/128을 뜻함루프백 주소ens33 바깥과 통신할 대 00:0c:29:b5:b3:fb 맥주소inet 192.168.59.128/24 ip주소같은 서브넷이여야 기본적인 통신 가능(직접 통신 가

일련번호 - 1 = 송신한 바이트 수(보낼 데이터만큼 증가)확인 응답 번호 - 1 = 수신한 바이트 수(상대방에게 수신한 데이터 크기만큼 증가)수신할 수 있는 버퍼 크기 = window size수신할 쪽에서 자신의 사이즈를 알려줌 > 버퍼가 가득 찬 경우윈도우 사이즈가

커널은 하나의 프로그램proc 커널이 직접 관리(리소스를 추적 관리 하기 위한 목적), root 조차도 제한적인 작업만 가능실질적인 커널에서 하드웨어 리소스에 대한 현재 사용하는 상태를 proc이라는 폴더로 관리, 원시 데이터로 가지고 있음폴더 내에서 bash라는 프로

man(메뉴얼) 페이지 스크롤 제어정확하지 않은 커맨드를 주면 확인 불가능커맨드 옆의 숫자 > 섹션별로 메뉴얼을 분리passwd(1) : 일반 사용자(비밀번호)passwd(5) : etc 안의 중요한 설정 파일들의 필드 설명(비밀번호)리눅스는 파일+섀도우sudo -i

; 엔터를 대신하는 symbol(한 line에 여러 command 실행 가능)\\+Enter enter 시 command line을 파싱하지 않아 multi line에 하나의 command를 실행 가능alias 사용자 정의 명령 설정process 별로(PID) alia

echo $PS1\\u 사용자정보\\h 호스트정보맨 앞이 공식이름, 뒤의 이름들은 alias 이름들vi편집기(vim)공백과 내용없음을 구분하기 위해 물결표(~) 사용명령모드에서는 캐릭터 하나하나가 명령으로 인식편집모드를 진입하는 방법(i, a, o, I, A, O)i

첫번째 $ 뒤의 숫자가 6, SHA512 알고리즘을 사용두번째 $ 뒤의 값, salt값세번째 $ 뒤의 값, hash값root는 비번없이 아무 사용자에 로그인 가능, 규칙에 구애받지 않음일반 사용자들은 비번에 대한 rule 까다롭게 설정되어있음 /etc/security

사용자 환경마다 쉘이 다를 수 있으니(쉘마다 문법 차이가 있을 수 있음) 그 쉘 스크립트에 대한 호환성을 진단하기 위해 사용unset(선언하지 않음)두자리 이상 숫자, 예를 들면 $10은 $1(첫번째 위치변수)라고 인식하기 때문에 ${10}으로 지정해줘야함하나의 str

for문의 argument list참인 동안 loopwhile과 다르게 참이면 종료true 대신 : 사용 가능/c echo 명령에서 사용하는 옵션, 출력 후에 줄 바꿈을 하지 않고 사용자의 입력을 대기windows는 파일 이름의 대소문자를 구별 안함, linux에서

Agile한 조직일수록 조직의 퍼포먼스를 이해하는 능력이 높음(퍼포먼스가 얼마나 걸릴지 예상의 정확도가 높음)Manifesto : 선언문워터폴 : 한번 지나가면 되돌아가기 어렵다워터폴은 처음부터 완벽해야한다워터폴을 사용하는 조직 예시 : 건축워터폴의 단점을 보완한게 A

vm마다 firmware 수준까지 가상화 수준을 적용Boot loader에서 booting, Boot loader에서 커널의 위치 정보를 가지고 있음, 운영체제의 핵심 컴포넌트인 커널을 메모리에 로딩하기 위해firmware에 따라 하드디스크를 분할하는 방식이 달라짐bo

리눅스는 오픈소스이기때문에 해킹 시도 다수, 패키지를 최소화하는 방식으로 보안 systemctl로 systemd를 제어unit으로 구분unit 중 target : 실행수준을 제어할 수 있는 서비스 그룹unit은 확장자로 구분systemctl은 주로 service를 제어

alias 이름을 있는 command로 생성한 후 원래 original command를 사용하고 싶을 때 앞에 \\를 붙이면 original command 사용 가능9시 44분에 dev-host라는 이름의 nginx 이미지 생성 후 실행(이미 있다면 그냥 실행)9시 3

두가지 의미를 지닌 I디스크에 적용되는 HA 적용 기술숫자로 분리되어concatenate(연속적 사용), 용량은 커버되는데 성능이 커버되지 않음stripping 기술 : 성능에 focus, 순차적 사용이 아닌(logical volume 입장에서는 연속적이지만 물리적인

가상화 vs 컨테이너계층의 차이가상화는 hardware emulation부터 emulate함하드웨어 cpu의 가상모드를 켜야한다vmware가 firmware 수준까지 지원컨테이너와 다르게 hardware emulation과 kernel이 무겁게 올라가는 형태, util

가상화 디스크 이미지가 hypervisor에 의존 가상화가 등장한 이유 하드웨어 자원에 대한 이용률을 높이기 위해 등장하나의 image로 여러 컨테이너를 생성 가능(사진에서의 nginx) docker inspect container id 로 ip 확인원본이 수정되는 것이 아닌 원본을 복사 후 수정(cow, copy on write) 
entrypoint는 cmd와 달리 컨테이너를 실행 시 overwrite가 되지 않음, 하지만 임의로 옵션을 넣어 overwrite 가능cmd는 내장되어있는 구문이 컨테이너 실행 시 대체 구문이 있다면 overwrite가 될 수 있음entrypoint는 고정된 실행 파

Docker clusterDocker instance들이 하나로 연결, node 그룹의 가상화 clustercluster도 가상화의 일종시스템을 묶어서 super computer로 쓰는 기술docker에서는 swarm

kubectl run하면 master node쪽에서 ~/.kube/config를 참조해서 요청kubectl get nodes -v9 자신의 home의 config파일을 참조, RESTful API로 자동 convertingetcd(noSQL, 여러 노드의 분산 아키텍처

worker에도 적용supervisor 명령을 실행할때는 sbin에서 작업하는것이 일반적임/usr/sbin/ksetup를 추가해당 사용자 홈에 .kube라는 디렉토리가 있으면 먼저 삭제, 삭제 후 밑의 3 step을 진행하는 쉘 스크립트chmod +x /usr/sbin

RHEL9 설치 후 k8s master, worker node 설정Error: container create failed: pivot_root: Invalid argumentError from server (BadRequest): container "calico-csi

Error: connect ECONNREFUSED 172.18.0.2:3306 app-1 at TCPConnectWrap.afterConnect as oncomplete

첫날에 발생했던 calico node driver 오류 해결 calico를 cilium으로 변경 후 설치 cilium 설치 아마 calico에서도 패키지 업데이트 후 kernel, kernel-tools, kernel-tools-libs 설치하면 해결될 것 같음
프로젝트 발표
AWS 기초

AWS IAM, S3, MAF 등 설정
종료 = 삭제를 의미공인IPDHCP : dynamic IP : 종료 시 자동 반납static IP : 종료 시 자동 반납 x

USB처럼 삽입/제거 가능같은 가용존(데이터센터)에 있어야 연결 가능미러링된 볼륨을 사용(RAID 1), 소프트웨어적으로 미러링할 필요 없음기본적인 EBS 볼륨 백업은 스냅샷을 사용처음 백업 시에는 풀백업을 받아와야 함증분식 백업: 업데이트된 데이터만 저장하는 백업,


버킷 생성 후 index-alb.html 파일 추가, 퍼블릭으로 설정
지원할 기업의 정보를 기준으로사소한 정보라도 알고 있다면 차별성을 가질 수 있음, 예를 들어 스프링의 버전 등그 회사만의 장점을 보기 위해 도메인 지식이 필요소규모 회사라 정보가 부족하면 비슷한 경쟁사를 기준으로 정보 수집



아키텍처 형태로 실습

버킷 웹 사이트 엔드포인트로 직접 접근 시 CloudFront 대체 도메인이나 배포 도메인으로 접근 시업로드중..

VPC A와 VPC B를 이용한 Transit Gateway + VPN 실습 진행
실습 진행
EKS에서 클러스터 구축 후 ingress controller 설정, Github Actions와 ArgoCD를 이용한 CI/CD와 Grafana, Prometheus를 이용한 모니터링과 auto scaling을 목표아키텍처 작성 후 내가 맡은 부분인 auto s

개인공부 후 autoscaling 적용
autoscaling에 대한 자료 정리https://tech.scatterlab.co.kr/kubernetes-hpa-custom-metric/부하 테스트 자료https://velog.io/@rockwellvinca/EKS-HPA-VPA-CAkarpe
발표자료 정리https://grateful-triangle-fa6.notion.site/AWS-EKS-Prometheus-HPA-Cluster-Autoscaler-Autoscaling-75148ac305014a5dbc5be13f47a34584

1일차 : 팀 구성 및 프로젝트 구상2일차 : kops 구축3일차 : Autoscaling 설정3일차 issue
EKS와 달리 kops는 IRSA 방식을 기본적으로 쓰지 않기 때문에(물론 IRSA를 따로 설치하면 가능하다 한다) 파드가 aws 자격증명을 상속받지 못한다 한다 난 kops를 ec2 인스턴스 위에 설치했기 때문에 CA를 하려면 kiam이나 kube2iam 같은 도구나
kops는 설치할때 ca가 자동으로 같이 등록돼서 필요 없다고 한다....... 24/10/16 ca가 자동으로 같이 등록되는게 아니라 따로 설치 해야하지만 기존 내가 알던 irsa 방식이 아니여도 노드 권한을 파드가 상속 못한다는 개념이 아니라 kops도 노드 권한
프로메테우스 configmap.yaml에 템플릿 변수를 사용하여 쿼리문 작성

기존 configmap을 수정하여 적용하는 방식 대신 prometheus operater가 설치되어있으니 prometheusRule을 적용하는 방식 사용프로메테우스 ui와 hpa describe했을때 간헐적으로 unknown 뜨는 현상프로메테우스 설정 파일에서 crap

10/17~18기술세미나 준비 및 발표(MSA)남은시간에 JMeter 네트워크 지연 없이 테스트할 방법 모색10/21인스턴스를 새로 하나 파서 JMeter 설치, 오토스케일 테스트10/22hpa 설정 수정하기 위해 리서치기존 앱 배포 컨테이너에 requests, lim

어제 해결하려고했던 메모리가 자꾸 들쭉날쭉하는 문제는 Node.js로 만든 앱이라 가비지컬렉션때문에 그렇다고 한다 오늘 한 일 메모리 문제 이유 찾아보기 적정 requests값 설정 prometheus rule 수정 적정 hpa 값 설정 부하테스트 jmx파일 수정