일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- C#
- RFP
- it용어
- Oracle
- Oracle VM VirtualBox
- dbeaver
- Python DataFrame
- Python 라이브러리
- 데이터베이스
- sql
- 파이썬
- PYTHON
- python algorithm
- MariaDB
- 파이썬 전처리
- 리눅스 명령어
- HTML
- putty
- it 용어
- VirtualBox
- 파이썬 데이터프레임
- csharp
- Algorithm
- 코딩테스트
- tibero
- 리눅스
- 오라클
- 파이썬 알고리즘
- 알고리즘
- linux
- Today
- Total
오경석의 개발노트
IT 용어_로컬 서버, 개발 서버, 운영 서버 본문
일반적으로 서버 개발환경은 아래와 같이 Local Server, Development Server, Integration Server, QA Server, Staging Server, Production Server 환경으로 나뉜다. 각자의 역할과 목적이 다르고, 그에 따라서 시스템의 크기도 다르다.

로컬 서버(Local Server) : 개발자들이 처음으로 실행하는 서버. 흔히 말하는 http://localhost:8080 또는 https://localhost:8080으로 접속하여 우리가 개발하는 화면들을 볼 수 있다(예, 각 PC에 MySQL 등의 DB와 Tomcat 등의 제품을 설치하고, Eclipse와 같은 개발 툴과, 컴파일러 등이 설치되어 있는 환경).
이 로컬 서버에서는 개발자들의 개인 개발 환경에 따라 결과가 달라질 수 있다. 이 local 환경을 구축할시에 가장 주의해야 할 점은 모든 개발자가 같은 개발 환경을 사용해야 한다는 것이다. 실제로 많이 일어나는 문제인데, 다른 version은 JVM을 사용하거나, 다른 버전의 Tomcat을 사용하거나 Lang(문자 local 설정)을 다르게 해서, 정작 코드를 합칠 때, local에서 잘 작동했던 코드가 작동하지 않는 경우가 많다.
개발 환경을 표준화 하는 방법은 여러 가지가 있지만, 전체 개발 환경(JDK, Eclipse, 라이브러리)을 zip 파일 형태로 묶어서 사용하는 방법이 가장 일반적이다. 또는 maven을 사용할 경우, 개발에 사용되는 JDK, 라이브러리 버전 등을 지정할 수 있기 때문에 개발환경 차이에서 오는 문제점 상당 부분을 해소할 수 있다.
개발 서버(Development Server) : 개발 환경은 각 개별 개발자들이 만든 코드를 합쳐서 서버 환경에서 테스트해볼 수 있는 환경이다. 소스코드를 형상관리 시스템에 commit하면, 코드는 이 dev 환경에 자동으로 배포되고, 이 환경에서 테스트가 된다. 기능 개발을 위주로 하기 때문에, 서버의 환경은 production보다 훨씬 작다. 예를 들어, production이 클러스터링 환경으로 수개의 서버로 구성된다면, 개발 환경은 한 두 개의 서버로 기능 구현이 가능한 정도로 구축하는 것이 일반적이다.
Integration Server(통합 개발 서버) : 통합 개발 환경은, 여러개의 컴포넌트를 동시 개발하는 프로젝트가 있고, 각 컴포넌트가 다른 컴포넌트에 대해서 의존성을 가지고 있을 때, 컴포넌트를 통합 및 테스트하는 환경으로 사용한다. 예를 들어, 단말과 서버를 같이 개발하는 환경의 경우, 이 integration 환경에서 통합을 한다. dev 환경과 마찬가지고, 최소한의 set으로 구성하되, dev 환경에서 release가 되면 주기적으로 deploy 한다.
QA 서버(QA Server) : 테스트 환경은 QA 엔지니어에 의해서 사용되는 환경으로, short release 주기에 따라서, 개발환경에서 QA 환경으로 배포되고, 여기서 기능 및 비기능(Load Test)등을 QA 엔지니어가 수행한다. 비 기능 테스트를 수행할 시에는, production과 거의 유사한 환경을 만들어 놓고, 테스트를 수행한다(경우에 따라서는 비기능 테스트는 release전에, production 환경에서 직접 수행하는 경우도 있다. 이런 경우는 release cycle이 매우 긴 경우 주로 사용하는데, 기업의 내부 IT 시스템을 만들어서 몇 년씩 사용하는 경우와 같을 때 이런 방식을 이용
스테이징 서버(Staging Server) : 운영 환경과 거의 동일한 환경을 만들어 놓고, 운영환경으로 이전하기 전에 최종적으로 여러 가지 비기능적인 부분(Security, 성능, 장애 등)을 검증하는 환경. 테스트 서버(Test Server), QA 서버(QA Server)등으로 불린다.
운영 서버(Production Server) : 실제 서비스를 위한 운영 환경
대부분 개발환경은 별도로 운영하는 것이 일반적이고, 상황에 따라서 integration, qa, staging 환경은 요구 사항에 따라서 합치거나 별도 운영한다. 환경이 많아지면 조금 더 다양한 형태의 검증과 각 stakeholder(테스터, 개발자, 사용자 등) 별로 테스트가 쉽지만 반대로 각 환경을 유지하는데 필요한 서버들과 운영 인력이 많이 소요되는 단점이 있다. 그래서 요즘과 같이 가상화 환경을 사용하는 경우에는 이미지를 만들어놨다가 실제 테스트나 사용을 할 경우에만 가상 서버에 환경을 deploy 해서 사용하고 사용이 끝나면 다시 이미지를 스토리지에 저장해 놓는 전략을 많이 사용한다.
대부분의 소프트웨어는 개발 서버와 운영 서버를 각각 두는 전략을 사용한다. 특히 분리는 물리적이다. 실제 서버 장비를 두 대 이상 사용한다. 개발과 운영 서버를 분리하는 이유는 서비스 안정성을 높이기 위함이다. 참고로 개발 서버는 개발계, 운영 서버는 운영계로도 많이 부른다.
개발 서버는 소프트웨어 제품을 개발하고, 테스트하고, 디버깅하는 공간이다. 운영 서버에 배포하기 위한 리허설 무대인 셈이니 통상 운영 서버와 거의 비슷한 환경으로 구성된다. 이곳에서 이루어지는 개발은 운영 서버에 영향을 주지 않기 때문에 큰 부담 없이 구축하고 테스트할 수 있다.
운영 서버는 실제 사용자들과 상호작용하는 라이브 서버이다. 운영 서버가 뻗으면 사용자는 해당 서비스를 사용할 수 없다. 때문에 운영 서버에 배포되기 전 개발 서버에서 충분히 테스트가 이루어져야 한다.
예를 들어 프로그램 업데이트 작업은 개발 서버에서 이루어진다. 개발이 되면 실제 사용 환경에서 버그가 없는지 확인하는 과정을 거친다. 문제가 없음이 확인되면 운영 서버에 배포한다.
보통 회사에서는 로컬 서버에서 각자 코드를 만들고 SVN, Github 등을 이용해서 개발자들끼리 개발 서버에서 코드를 합쳐서 qa 등 테스트를 충분히 해보고 스테이징에 올려서 실제 기능을 점검, 검증한 뒤에 prod로 운영을 한다.
참고자료 : http://bcho.tistory.com/759
개발 환경(dev,stage,qa,production)
서버 개발을 가정하고, 먼저, 개발 및 운영에 사용할 서버를 어떻게 배치 해야할지를 살펴보자일반적인 서버 개발환겨은 아래와 같이 local,dev,integration,qa,staging 그리고 production 환경을로 나뉘어
bcho.tistory.com
로컬서버(local), 개발서버(DEV), 스테이지서버(STG), 운영서버(PROD)란?
프로젝트를 수행하는데 있어서 서버는 여러 개를 구동을 한다. 그 중에서도, 로컬서버(local), 개발서버(DEV), 스테이지서버(STG), 운영서버(PROD)에 대해 글을 작성한다. 로컬 서버(Local Server) 로컬 서
yongku.tistory.com
개발 서버 운영 서버 나누는 이유 (개발계 → 운영계)
대부분의 소프트웨어는 개발 서버와 운영 서버를 각각 두는 전략을 사용합니다. 특히 분리는 물리적입니다. 실제 서버 장비를 두 대 이상 사용합니다. 개발과 운영 서버를 분리하는 이유는 서비
change-words.tistory.com
'기타 > IT 용어' 카테고리의 다른 글
IT 용어_제안요청서(RFP, Request For Proposal) (0) | 2022.11.14 |
---|---|
IT 용어_객체 (0) | 2022.11.12 |
IT 용어_객체 지향 프로그래밍 (1) | 2022.11.01 |
IT 용어_덕 타이핑(duck typing) (0) | 2022.10.25 |
IT용어_백업(back-up) (1) | 2022.10.04 |