• Stars
    star
    134
  • Rank 270,967 (Top 6 %)
  • Language
  • Created about 8 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

웹 개발자를 위한 서버/인프라 정리

웹 개발자를 위한 서버/인프라 용어 정리

처음 웹 개발자로 회사에 입사했을 때 크게 힘들었던 것들이 있다.

  • Javascript 생태계(npm, grunt, require, backbone 등)
  • 리눅스 환경 (리눅스 커맨드, 쉘스크립트, Vim 등)
  • 서버/인프라 환경

특히나 서버/인프라 환경의 경우 시스템팀과 대화시에 처음 듣는 용어가 너무 많아 부끄러움이 가득했다.
개발자라고 해서 순수하게 Application 코드만 개발하면 안된다고 생각하는 계기가 되었다.
나와 같은 어려움을 경험하지 않았으면 하는 마음에 관련된 용어들을 정리하려고 한다.
(개인적인 생각에 프로그래밍 언어 가짓수를 늘리는 것보다는 시스템의 전체적인 그림을 그릴수 있는게 더 좋은 것 같다.
언어는 Java, Javascript, Shell Script까지만 충실히 하고 그외에는 네트워크(HTTP 등), 리눅스 서버, 인프라환경, DB 등에 시간을 할애하는 것을 추천한다.)
좀 더 내용을 보충하고 싶으신 분들,
틀린 내용을 수정하고 싶으신 분들
모두 마음껏 Pull Request 보내주시면 될것 같다.

용어 정리

  • 정적 콘텐츠(static Content), 정적 리소스(Static Resources)

    • 이미지, html, css, js 등과 같이 클라이언트로 반환하는 데이터
    • 내용이 변경하지 않는 것이 특징 (반대로 매 요청마다 변경되는 것을 동적 콘텐츠라 한다.)
  • CDN (Content Delivery Network)

    • 콘텐츠를 전송하기 위한 네트워크 시스템
    • 클라이언트 접속 위치를 기준으로 가장 가까운 캐시 서버를 선택해서 전달하는 것이 특징
    • 아카마이 (Akamai) 등 상용 서비스가 존재
  • 로드 밸런서 (Load Balancer)

    • 클라이언트와 서버사이에서 클라이언트의 요청을 여러 서버로 적절하게 분산하는 것을 로드 밸런스 라고 함
    • 로드 밸런스 해주는 장치를 로드 밸런서
    • L4 스위치 : TCP 헤더등의 프로토콜 헤더의 내용을 분석해서 서버 결정
    • L7 스위치 : 어플리케이션 계층의 내부까지 분석해서 서버 결정
  • LVS (Linux Virtual Server)

    • 여러 리눅스 서버를 하나의 리눅스 서버처럼 사용할 수 있게 해주는 시스템
    • 관례적으로 리눅스로 만든 로드밸런서 의 의미로 사용된다.
    • 리눅스 포털 참고
  • OSI 참조 모델 (OSI 7계층 모형)

    • 네트워크 프로토콜 계층을 설명한 모델, 총 7계층으로 나누어져있다.
    • Layer7 (어플리케이션 계층) : HTTP나 SMTP 등
    • Layer4 (트랜스포트 계층) : TCP나 UDP 등
    • 블로그 참고
  • 포워드 프록시 (Forward Proxy)

    • 사용자 PC가 직접 Target 사이트에 접근하는 것이 아니라, 중간 프록시 서버에게 위임하여 Target 사이트의 데이터를 전달 받는 것을 얘기한다.
    • 즉, 내부에서 외부로 나갈때 사용되는 프록시
    • 사내 Maven 저장소와 같이 제한된 환경을 제공하고 싶을 경우 사용된다.
    • 참고
  • 리버스 프록시 (Reverse Proxy)

    • 사용자 PC가 프록시 서버로 요청하고 프록시 서버가 Target 사이트로 부터 데이터를 가져오는 방식
    • 즉, 외부에서 내부로 들어올때 사용되는 프록시
    • Nginx 혹은 Apache가 80포트로 요청 받아 Tomcat의 8080포트로 프록시 시키는 경우 등
    • 참고
  • 캐시 (Cache)

    • 동일한 요청일 경우 이전에 요청한 결과를 다시 사용하는 것을 캐시 라고 한다.
    • 브라우저 캐시(HTTP 프로토콜 캐시) : 정적 데이터(CSS, Javascript, Image)등을 브라우저가 로컬에 캐시하여 동일한 요청일 경우 서버까지 거치지 않고 캐시된 데이터를 그대로 사용하는 방식
    • 웹서버 캐시 : Nginx, Apache 등에서 정적 데이터를 캐시하여 WAS(Web Application Server)까지 요청이 가지 않고 웹 서버단에서 처리하는 것
    • 어플리케이션 캐시(메모리 캐시) : Memcached, Redis등을 사용하여 처리시간이 많이 필요한 DB요청 혹은 API 요청등을 캐시하여 동일한 요청일 경우 캐시된 데이터를 바로 사용하여 성능상 이점을 노리는 방식
  • 가용성

    • 시스템을 정지시키지 않는 능력의 정도
    • 즉, 가용성이 높다는 말은 거의 멈추지 않는다 와 같은 의미
  • 확장성

    • 이용자나 규모가 증대됨에 따라 시스템을 확장해서 대응할 수 있는 능력의 정도
  • 데몬 (Daemon)

    • 백그라운드에서 지속적으로 실행되면서 특정 작업을 수행하는 프로그램
    • Apache(httpd), Tomcat, Nginx 등
  • 스케일 아웃

    • 서버를 여러대 두고 분산함으로써 시스템의 성능을 향상시키는 것
    • 로드밸런서 하위의 웹 서버들 갯수를 늘리는 등을 말함
  • 스케일 업

    • 단일 서버의 하드웨어 성능을 향상시키는 것
    • 서버의 메모리를 8G -> 16G로 올리는 등을 말함
  • 전송량 (Throughput)

    • 단위 시간당 데이터 전송량
    • 비유하자면 빨대의 너비가 큰 경우를 전송량이 크다 라고 한다.
  • 지연시간 (Latency)

    • 데이터가 도달할 때까지의 시간
    • 비유하자면 빨대의 길이가 짧은 경우를 지연시간이 짧다 라고 한다.
  • 부하 (Load)

    • 시스템에 의해 수행되는 작업의 크기 또는 네트워크의 트래픽 수준
    • CPU부하 혹은 I/O 부하등이 있다.
    • "부하가 높다" 라고 하면 현재 성능상 이슈가 발생할 여지가 있다로 해석할 수 있다.
  • 페일오버 (Fail Over)

    • 장애 극복 기능
    • 컴퓨터 서버, 시스템, 네트워크 등에서 이상이 생겼을 때 예비 시스템으로 자동전환 되는 기능
  • 스위치 오버 (Switch Over)

    • 페일오버와 같은 장애 극복 기능
    • 사람이 수동으로 전환 하는 것
  • 엘댑 (LDAP)

    • 디렉토리에 접근하기 위한 경량 프로토콜 (HTTP, FTP와 같은 통신 프로토콜 중 하나)
    • 사용자, 패스워드, 그룹정보 등을 하나하나 설정하기 번거로움을 해결하기 위해 등장
    • 가장 일반적인 사내 인증시스템
  • HA (High Availability) Active-standby 구성

    • 무중단 서비스를 가능케하는 클러스터
    • 일반적으로 Active-standby 구성으로 운영
    • Active(활성화) 노드로 운영중, 문제 발생시 Standby(대기) 노드로 페일오버 하도록 구성
    • gunsystems님 블로그 참고
  • 클러스터링

    • 똑같은 구성의 서버들을 병렬로 연결 후, 마치 하나의 컴퓨터처럼 사용하는 것
    • 고성능 컴퓨터 1대보다 저사향 컴퓨터 여러대를 클러스터링 하는 것이 더 효과적
    • 기존 시스템의 성능 확장시에도 클러스터링이 좀 더 용이함
    • 보통 로드밸런서와 함께 사용함
    • 타이거범님의 블로그 참고
  • 레플리케이션

    • 데이터를 실시간으로 다른 곳으로 복제하는 것
    • 일반적으로 DB의 안정성을 보장하기 위해 사용한다.
    • 보통은 쿼리를 요청하면 Master(메인 DB서버)에서 이를 받아 처리후, Slave(서브 DB서버)로 변경 사항을 전달하는 방식
    • 한 DB서버가 고장나도 단시간에 DB 서비스를 재개할 수 있다는 장점이 있다.
    • 성능상 이점을 얻기 위해 입력/수정/삭제는 Master에서 처리하더라도 조회(select)는 여러대의 Slave에서 분산처리하도록 한다.
    • joinc님 블로그 참고
  • 샤딩

시스템 운영

More Repositories

1

junior-recruit-scheduler

주니어 개발자 채용 정보
JavaScript
11,200
star
2

freelec-springboot2-webservice

Java
1,074
star
3

blog-code

http://jojoldu.tistory.com/ 에서 제공하는 예제 code
Java
642
star
4

spring-batch-in-action

내가 만드는 Spring Batch In Action
Java
596
star
5

springboot-webservice

스프링부트로 웹서비스 구축하기 시리즈
Java
573
star
6

review

세미나 및 책, 강연등의 후기
HTML
435
star
7

markdown-tistory

작성된 마크다운의 내용과 이미지를 본인 티스토리에 업로드하는 프로젝트
JavaScript
263
star
8

translator

IntelliJ Translate Plugin
Java
204
star
9

spring-batch-querydsl

스프링배치와 QuerydslPagingItemReader
Java
130
star
10

oop-java

객체지향에 집중하기 위한 순수 Java 프로젝트
Java
80
star
11

monorepo-nestjs-typeorm

Monorepo by Nestjs & TypeORM
TypeScript
73
star
12

nodejs-unit-test

NodeJS Unit Test
TypeScript
65
star
13

spring-boot-aws-mock

Queue, Redis, Etc (Aws Service Mock Library for Spring Boot)
Java
58
star
14

springboot-jenkins-docker-slack

스프링부트 + 젠킨스 + 깃허브 + 슬랙
Java
47
star
15

postgresql-in-action

PostgreSQL Tips
JavaScript
44
star
16

point

SQS를 이용한 비동기 포인트 시스템
Java
40
star
17

intellij-development

IntelliJ IDEA로만 개발 하기
Java
37
star
18

jojoldu.github.io

이력서
HTML
36
star
19

spring-boot-redis-tip

실습과 코드로 정리하는 레디스 팁
Java
33
star
20

fastcampus-sql-tunning

패스트캠퍼스 - 개발자를 위한 SQL 튜닝 캠프
32
star
21

fastcampus-java

Java
32
star
22

my-cli

나만의 커맨드라인 스크립트 만들기 튜토리얼
JavaScript
26
star
23

ts-api-template

TypeScript
25
star
24

vacation-homework

방학 숙제용
TypeScript
24
star
25

spring-boot-kotlin-test-in-action

Kotlin & Spring Boot Test Code Example
Kotlin
21
star
26

jenkins-pipeline

젠킨스 파이프라인 정리
Java
19
star
27

springboot-deploy

SpringBoot & AWS Auto Scaling & Code Pipeline
Java
16
star
28

gh-in-action

Github Action Tips, Examples
TypeScript
16
star
29

intellij-idea-tutorials

IntelliJ 튜토리얼
15
star
30

dev-beginner-group

초보개발자모임 챗봇 & 메일구독
JavaScript
14
star
31

devbeginner

초보개발자모임
HTML
13
star
32

kotlin-in-action

Kotlin Example
Kotlin
13
star
33

react-unit-test

TypeScript
13
star
34

md-tistory

markdown uploader for tistory (by type stack)
TypeScript
12
star
35

blog-comments

블로그에 utteranc 사용하기
Shell
12
star
36

spring-boot-kotlin-querydsl

Kotlin
11
star
37

jira-in-action

Jira 사용팁
11
star
38

springboot-sqs-example

spring boot & aws sqs example
Java
10
star
39

fastcampus-devops-cloud-platform

패스트캠퍼스 DevOps로 활용하는 클라우드 플랫폼 강의 정리
10
star
40

datagrip-in-action

JetBrains DataGrip Tips
10
star
41

linux-thread

Java
10
star
42

fc-spring-boot

패스트캠퍼스 - 스프링부트를 활용한 쇼핑몰 프로젝트 CAMP
Java
10
star
43

aws-lambda-telegram-travisci

AWS로 서버없이 구축하는 텔레그램 Bot
JavaScript
9
star
44

woowa-tech-2019-spring-batch

Java
9
star
45

fastcampus-aws-workshop

패스트캠퍼스 AWS 운영 서버 관리 마스터 워크샵
9
star
46

income-bot

수익 알람 Bot
Vue
9
star
47

springboot-rest-docs-spock

spring rest docs & spock & rest assured & gradle multi module
HTML
8
star
48

fastcampus-vuejs

패스트캠퍼스 강의 정리
8
star
49

nestjs-template-engine

NestJS + Handlebars
TypeScript
7
star
50

spring-batch-integration-in-action

spring batch integration 예제
Java
7
star
51

blog-springboot3

Java
7
star
52

gradle-travisci-coverall

Gradle 프로젝트 Travis CI & Coverall 연동
Java
6
star
53

jest-in-action

TypeScript
6
star
54

wikibook-spring-batch

예제 코드
Java
6
star
55

nestjs-in-action

TypeScript
6
star
56

devbeginner-news

빠르게 만들어보는 뉴스피드
CSS
6
star
57

aws-beanstalk-tunning

AWS Beanstalk 성능 튜닝 시리즈
Java
5
star
58

clean-code-tdd-kotlin

Kotlin
5
star
59

stock-calculator

시리즈라운드별 지분/환산 금액 계산기
HTML
5
star
60

refactoring2-ts

Refactoring 2 with Typescript & Jest
TypeScript
5
star
61

spring-boot-multi-datasource

Spring Boot MVC/Batch Multi Datasource
Java
4
star
62

jojoldu

4
star
63

fleet-in-action

Fleet (JetBrains New Editor) Tutorial
4
star
64

spring-boot-aws

Spring Boot & AWS Integration Example
Java
4
star
65

intellij-git-tip

IntelliJ Git 팁
Java
4
star
66

domain-oriented-observability

TypeScript
4
star
67

udemy-react-query-spa

TypeScript
3
star
68

teamcity-in-action

팀시티 (Teamcity) 팁 모음
Shell
3
star
69

lerna-in-action

TypeScript
3
star
70

tistory-ppm

티스토리 월별 글 발행수 추적기
JavaScript
3
star
71

ecs-docker-compose-nodejs

Typescript & Docker Compose & AWS ECS
TypeScript
3
star
72

spring-batch-benchmark

Spring Batch Performance BenchMark
Java
3
star
73

codesoom-react

3
star
74

begin-docker

신림프로그래머 도커 스터디
Java
3
star
75

bns

Bitly And Sns
Java
3
star
76

next-step

박재성님의 next step 교재 스터디
Java
3
star
77

spring-boot-postgresql

Java
3
star
78

jenkins-beanstalk-multi-module

AWS Beanstalk + EC2 Jenkins + Gradle Multi Module
Java
3
star
79

chatgpt-in-action

chatGPT 테스트
TypeScript
2
star
80

vectordb-embedding

TypeScript
2
star
81

ulysses-in-action

2
star
82

kotlin-mongodb

Kotlin
2
star
83

koscom-springboot-aws

Java
2
star
84

gradle-multi-module-coveralls

Java
2
star
85

pinpoint-node-in-action

pinpoint node agent Test
JavaScript
2
star
86

java-note-professionals

Java
2
star
87

next-step-review

Next Step 코드리뷰 참고용
Java
2
star
88

tuto-handlebar

HTML
2
star
89

intellij-settings

intellij settings sync
Java
2
star
90

ngrinder-in-action

Ngrinder (Performance Testing Tools)
Shell
2
star
91

node-performance-in-action

TypeScript
2
star
92

xunit-tdd-ts

xUnit Test Framework Building by TypeScript
TypeScript
2
star
93

lambda-in-action

JavaScript
2
star
94

markdown-tistory-vs-plugin

markdown-tistory Visual Studio Code 플러그인
JavaScript
1
star
95

mongodb-in-action

TypeScript
1
star
96

ddd-java

Domain Driven Design
Java
1
star
97

git-flow-example

사내 깃플로우 예제
Java
1
star
98

resume

1
star
99

intellij-task-example

IntelliJ와 이슈관리 시스템 연동 연습 자장소
Java
1
star
100

javascript-study

JavaScript
1
star