본문 바로가기

분류 전체보기255

MySQL 소개 - 01. MySQL을 학습하는 이유 수 많은 종류의 데이터베이스들 Document DB, Graph DB, 관계형 DB, 전문색인 DB, Key-value DB, Wide column DB 무엇부터 공부해야 할까? https://db-engines.com/en/ranking 에서 전세계 DB 랭킹을 보게 되면 1~4 위까지가 모두 관계형 데이터베이스 관계형 데이터베이스는 아직까지도 가장 범용적으로 사용됨 백엔드 개발자라면 아주 높은 확률로 관계형 데이터베이스를 실무에서 다루게 될 것 다른 종류의 DB는? 알아야 한다. 하지만 여러 종류의 DB들은 서로의 문제를 보완하고 발전한 상호보완적인 관계이다. 그렇기 때문에 하나를 깊게 학습하고나면 다른 종류의 DB들도 쉽게 학습이 가능 관계형 DB 관계형 DB 안에서도 많은 DB 들이 있음 Orac.. 2023. 6. 4.
대용량 시스템에 대한 이해 - 03. 대용량 시스템 아키텍처 맛보기 대용량 트래픽 / 데이터 처리는 왜 어려울까? 하나의 서버 또는 데이터베이스로 감당하기 힘든 부하 → 다수의 서버와 데이터베이스를 마치 하나인 것처럼 동작시키기 위해 여러가지 기법들이나 최적화 방법들을 사용하게 되는 것임 하나의 서버로 감당하기 힘들어 대부분 여러개의 서버 또는 데이터베이스를 사용함 여러개의 서버에서 유입되는 데이터의 일관성을 보장할 수 있어야 함 웹 서비스들은 24시간 무중단(언제든지 사용할 수 있어야 함) → 잘못된 코드 한 줄이 미치는 영향의 범위가 크다 코드 한 줄이 데이터에 미치는 영향범위가 굉장히 커짐 여러 마이크로 서비스들이 복잡한 의존 관계를 가짐 → 하나의 서버에서는 단순히 join도 가능하고 여러 transaction 보장들이 쉽게 되지만, micro service ar.. 2023. 6. 4.
대용량 시스템에 대한 이해 - 02. 왜 데이터베이스가 병목일까? 스케일업과 스케일 아웃 스케일 업 : 하나의 서버의 사양을 높여 더 많은 요청을 처리할 수 있게 함 유지 보수 및 관리 : 쉬움 확장성 : 제약이 있음 장애복구 : 서버가 1대, 다운 타임이 있음 스케일 아웃 : 서버의 대수를 늘림 → 하나의 서버에서 더 이상 처리하기 힘든 요청이 왔을 때 서버의 대수를 늘려 부하를 분산 시켜 문제를 해결하는 방식 유지 보수 및 관리 : 여러 노드에 적절히 부하분산 필요 확장성 : 스케일업에 비해 자유로움 장애복구 : 장애 탄력성이 있음 언제 스케일 아웃이 가능한가? 스케일 아웃을 해서 여러 대의 서버가 되더라도 클라이언트 입장에서 보았을 때 마치 하나의 서버처럼 동작하는 것으로 보이게 해야 함 → 같은 입력에 대해 항상 같은 결과를 반환 예를 들어 서버가 3대라고 해서.. 2023. 6. 4.
대용량 시스템에 대한 이해 - 01. 웹의 기본 아키텍처 기본적인 웹의 형태 클라이언트, 서버, 데이터베이스 웹의 구성이 복잡해지면 → 하나의 웹 서버가 2개의 서버로 분리됨 클라이언트(사용자) → 서비스가 증가함에 따라 무한대로 증가할 수 있는 구조 웹 서버 : html, css, js와 같은 정적 리소스 serving 웹 어플리케이션 서버 : 동적으로 변하는 data 처리 데이터베이스 클라이언트는 무한대로 늘어날 수 있지만, 웹 서버, 웹 어플리케이션 서버, 데이터베이스 자원의 유한함 때문에 늘어나는데 한계가 있음 웹 서버, 웹 어플리케이션 서버는 왜 나누어져 있을까? 태초에는 웹 서버만 있는 형태에서 웹의 복잡도가 증가함에 따라 웹 서버와, 웹 어플리케이션이 분리되는 형태로 발전해옴 분리의 핵심 관심사의 분리 관측 가능한 시스템 효율적인 리소스 사용 대용.. 2023. 6. 4.
실습 환경 구축하기 (MySQL, Intellij) 윈도우 환경에서 구축하기 MySQL 설치하기 MySQL :: Download MySQL Installer Select Operating System: Select Operating System… Microsoft Windows Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer 8.0.33 2.4M (mysql-installer-web-community-8.0.33.0.msi) MD5: 2a330cf24915964cca87e04dbb34e5d3 | Signatu dev.mysql.com 인텔리제이 설치 - 학생인증하면 ultimate 사용 가능 → 설치 후 학생계정 인증하기 인텔리제이 MySQL 연동 MySQL.. 2023. 6. 4.
ubuntu EC2에 docker 설치하기 1. PuTTY로 ubuntu EC2에 접속하기 2. docker 구축 과정 ubuntu 창에 다음 명령어들 차례로 입력 [Docker]Docker 설치하기(Ubuntu) 해당 블로그에 나와있는 순서대로 docker를 설치하였다. (패키지 저장소 추가 & Docker CE Install) docker 실행 중임을 확인하기 위해서는 다음 명령어를 입력하면 됨 sudo systemctl status docker active(running) 이므로 실행 중임 :q 를 입력하면 나갈 수 있음 3. sudo 명령 없이 docker 명령어 사용하기 설정 1. 현 사용자(ubuntu) ID를 docker group에 포함 명령어 : sudo usermod -aG docker ${USER} 2. 터미널 끊고, 다시 s.. 2023. 6. 3.
초간단 VM 사용법 VIM 에디터 이해 및 설치 VIM : Vi improved 에서 앞 글자를 빼내어 만든 이름 Vi : 전통적인 유닉스 에디터(개발자: 빌 조이), Visual Editor 줄임말 Vim 은 Vi에 자동화, 시각화 메뉴등을 추가한 프로그램 Vim 이외에 이맥스(Emacs, GNU 프로젝트 설립자 리차드 스톨만이 개발)라는 유명한 에디터가 있음(대부분 개발자는 두 에디터 중 하나를 사용함) vim 네 가지 모드 일반(명령) 모드 : 처음 vim을 실행했을 때 또는 입력 모드 / 명령 모드에서 ESC입력 시 - 찾기, 커서 이동 등 명령(명령행) 모드 : 일반 모드에서 : 입력 시 - 저장, 파일 읽기, vim 설정 등 입력(편집) 모드 : 일반 모드에서 a 또는 i 또는 o 키 입력 시 - 내용 입력 → .. 2023. 6. 2.
우분투 패키지 관리 ubuntu 배포판 다양한 배포판 중 하나 데비안 배포판을 기반으로 캐노니컬 사가 우분투 배포판 개발 데비안 배포판은 apt 프로그램을 이용해서 소프트웨어 설치 및 업데이트를 간편하게 한 패키지 우분투의 의미 : 남아프리카 부족 언어로 ‘너가 있으니 나도 있다.’라는 의미 우분투 데스크탑 배포판(X 윈도우 기반, GUI 환경 기본 제공) 과 우분투 서버 배포판, 두 가지 기본 배포판을 제공 지원 기간이 짧은 일반 버전과 지원기간이 장기(5년)인 LTS(Long Term Support) 버전으로 나눠서 발표 ubuntu 패키지 관리자 CentOS나 Fedora와 같은 RedHat 계열 배포판은 RPM 이라는 패키징 시스템을 사용함 ubuntu와 같이 데비안 계열 배포판은 deb라는 패키징 시스템을 사용함 .. 2023. 6. 2.
하드링크와 소프트링크 하드 링크와 소프트 링크 cp 명령 : 파일 복사 1MB 사이즈를 가지고 있는 A 파일을 B 파일로 복사 ex. cp A B : A를 B로 복사, A와 B는 각각 물리적으로 10MB 파일로 저장 하위 폴더 포함 복사시키기 ex. cp -rf * 폴더 하드 링크 : ln A B A와 B는 동일한 10MB 파일을 가리킴 즉, 동일한 파일을 가진 이름을 하나 더 만든 것일 뿐 전체 파일 용량은 달라지지 않음 cp와 ln의 차이점 A파일을 B파일에 복사한 경우 - cp : A파일을 수정해도 B파일은 바뀌지 않음 - ln : A파일을 수정하면 B파일도 바뀜 소프트(심볼릭) 링크 : ln -s A B Windows OS의 바로가기와 동일 ls -al 하면, 소프트 링크 확인 가능 (ex. lrwxr-xr-x lin.. 2023. 6. 2.
프로세스 관리 프로세스 vs 바이너리 코드 이미지 또는 바이너리 : 실행파일 실행 중인 프로그램 : 프로세스 가상 메모리 및 물리 메모리 정보 시스템 리소스 관련 정보 스케줄링 단위 리눅스는 다양한 프로세스 실행 환경 리눅스는 기본적으로 다양한 프로세스가 실행됨 유닉스 철학 : 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델 foreground process / background process foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스 예를 들어 ls -al을 입력하면 ls -al의 출력결과가 전부 나온 후에 그 다음 명령을 입력할 수 있음 backgrou.. 2023. 6. 2.
리다이렉션과 파이프 Standard Stream (표준 입출력) command로 실행되는 프로세스는 세 가지 스트림을 가지고 있음 표준 입력 스트림 (Standard Input Stream) - stdin 표준 출력 스트림 (Standard Output Stream) - stdout 오류 출력 스트림 (Standard Error Sream) - stderr 모든 스트림은 일반적인 plain text로 console에 출력하도록 되어있음 리다이렉션(redirection) 표준 스트림 흐름을 바꿔줄 수 있다. , files.txt (ls로 출력되는 표준 출력 스트림의 방향을 files.txt로 바꿔줌 → files.txt에 ls로 출력되는 .. 2023. 6. 2.
리눅스 파일시스템 및 사용자 관리 리눅스와 파일 모든 것은 파일이라는 철학을 따름 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있음 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어짐 파일 네임스페이스 전역 네임스페이스 사용 ex. /media/floofy/dave.jpg 쉘 종류 쉘(shell) : 사용자와 컴퓨터 하드웨어 또는 운영체제간 인터페이스 사용자의 명령을 해석해서, 커널에 명령을 요청해주는 역할 관련된 시스템콜을 사용해서 프로그래밍이 작성되어 있다. Bourne-Again Shell (bash) : GNU 프로젝트의 일환으로 개발됨, 리눅스가 거의 디폴트 Bourne Shell (sh) C Shell (csh) Korn Shell (ksh) : 유닉스에서 가장 많이 사용됨 리눅스 기본 명령어 정리.. 2023. 6. 1.