소프트웨어 개발 환경 구성: 현대적인 웹 개발을 위한 필수 구성 요소
최근의 소프트웨어 개발에서는 안정적이고 효율적인 환경을 구축하는 것이 매우 중요합니다. 이 블로그 포스트에서는 웹 개발을 위한 주요 구성 요소와 도구에 대해 살펴보겠습니다.
- 웹 서버(WEB)
- 클라이언트에게 정적 파일(HTML5, CSS3, JS , 이미지)를 제공하는 웹 서버 애플리케이션이 설치된 하드웨어
- 웹 애플리케이션 서버(WAS)
- 동적인 웹 서비스를 제공하기 위한 미들웨어가 설치된 하드웨어
- DB조회나 다양한 로직을 처리
- 데이터베이스 서버(DBMS)
- 데이터의 저장과 관리를 위한 데이터 베이스 소프트웨어가 설치된 하드웨어
- 파일서버
- 사용자의 파일을 저장하고, 파일을 공유할 목적으로 구성된 하드웨어
- Load Balancer(로드 밸런서)
- 여러 대의 서버가 존재할 경우 요청을 적절히 분배해주는 역할
- 분배 방식
- Random - 요청을 랜덤
- Least loaded - 가장 적은 양의 작업처리
- Round Robin - 순서를 정하여 동아가며 작업 분배
- CDN
- 용량이 큰 콘텐츠 데이터 (이미지, 비디오 등)을 빠른 속도로 제공하기 위해 사용자와 가까운 곳에 분산되어 있는 데이터 저장 서버
- 시스템 아키텍처 고려사항
- 확장성 : 클라이언트 수가 늘어났을 때 무리없이 요청 처리를 위해 확장성 고려
- 성능 : 요청한 내용을 정확하고 빠르게 돌려주어야 함
- 응답시간 : 모든 요청은 클라이언트가 불편하지 않도록 빠른 응답
- 시스템 소프트웨어
- 운영체제
- JVM (★)
- Java 관련 프로그램을 가동하기 위한 환경
- 모든 개발자가 동일한 버전을 적용
- Web Server
- WAS
- DBMS
- 데이터 저장과 관리를 위한 데이터베이스 소프트웨어
- 개발 소프트웨어 도구
- 요구사항 관리도구
- 설계/모델링 도구
- 구현 도구
- 테스트 도구
- JUnit (자바 테스트) (★)
- CppUnit (C언어 테스트) (★)
- JMeter
- SpringTest
- 형상관리 도구 (★)
- 산출물 및 소스코드의 변경사항을 버전별로 관리하여, 목표 시스템의 품질 향상을 지원하는 도구 ex) Git, CVS, SVN 등
- IDE 도구
- 소프트웨어 개발에 필요한 많은 도구의 기능을 하나로 묶어 활용하는 소프트웨어
- ex) 이클립스, 비쥬얼 스튜디오, 엑스 코드, 인텔리제이
- IDE 도구의 기능
- IDE 도구 선정 시 고려 사항
- 협업도구
- 여러 사용자가 각기 별개의 작업 환경에서 통합된 하나의 프로젝트를 동시에 수행할 수 있도록 도와주는 소프트웨어
- 클라우드 서비스 대표적
- Iaas - 장비, 하드웨어 대여
- Paas - 개발 환경 대여
- Saas - 소프트웨어 대여
- 협업 도구의 기능
- 전자관리 : 전자 결재, 조직도 등
- 프로젝트 관리 : 캘린더 , 타임라인, 간트차트, 대시보드 등
- 자체 드라이브 공간
- 문서 공유 지원
- 커뮤니케이션
- 다국어 지원
- 타 협업툴 간 연동 지원
- 분류
- 협업도구 도입 프로세스
- 문제정의
- 문제에 대한 솔루션, 기대효과 정의
- 협업도구 분석
- 협업 도구 최종 선정
이어지는 블로그 포스트에서는 형상관리 , 빌드 과정에 대한 논의를 진행할 것입니다. 계속해서 기대해 주세요!
2024년에 정보처리기사를 따기 위해 노력하는 모두에게 행운을 빕니다!