공부/오픈소스를 활용한 DevOps 환경 이해(7)
-
자동화 테스트
테스트의 종류 1. 블랙박스 테스트 : 요구사항 명세서대로 소프트웨어가 동작하는지에 초점 -> 소프트웨어 컴포넌트나 시스템의 내부 구조를 참조하지 않고, 요구사항/명세 기반으로 기능/비기능 테스트 2. 화이트박스 테스트 (구조 테스트) : 구현된 소스 코드 내부 구조를 분석하여 미리 정의된 오류를 찾아내는 테스트 단위 테스트 (Unit Test) : 테스트 가능한 소프트웨어의 가장 작은 부분을 실행하여 예상대로 작동하는지 확인하는 것 시스템의 소스 코드, 로직 등을 테스트로 점검하는 단계로 주로 소스 코드의 클래스나 메서드 단위의 기능이 정상적으로 동작하는지 검증 테스트 중인 단위가 작을수록 단위 테스트를 사용하여 동작을 표현하는 것이 쉬워지므로 단위의 분기 복잡성이 낮아짐 개발 단계에서 개발자 또는 개..
2021.05.02 -
소스코드 리팩토링
Code Smell 코드가 시간이 지나면서 요구사항과 기능들이 추가되면서 추상화, 모듈화, 캡슐화가 되지 않고 높은 결합성, 낮은 응집성, 낮은 가독성으로 이루어진 코드로 변하면서 점점 유지, 보수 및 확장이 어려운 애플리케이션이 되어가는 상태 -> 리팩토링이 필요 코드 리팩토링 기존 코드를 재구성하여 외부 동작을 변경하지 않고 내부구조를 변경하는 체계적 코딩 기술 소스코드의 로직을 단순화하고 불필요한 수준의 복잡성을 제거하게 됨 버그나 취약점을 쉽게 발견하고 수정할 수 있어 유지보수 및 확장성이 좋아짐 ->버그 수정, 기능 추가 등과는 달리 외부에서 보는 프로그램 동작은 변하지 않았지만 프로그램 내부 구조 개선을 통해 쉽게 버그를 발견하고 기능 추가 및 리뷰하기 쉽게 만든다. 리팩토링 개념 및 기법 성..
2021.05.02 -
정적 분석과 소스 품질
정적 분석 : 소프트웨어를 실행하지 않고 도구를 이용해서 소스 코드나 바이너리를 분석해서 소프트웨어의 잠재적인 결함을 찾아내는 활동 보통 sw 결함을 처리하는 비용은 결함을 늦게 발견할수록 급격히 증가하는 경향을 가진다 많은 시간과 비용이 드는 코드 리뷰를 진행하기 전에 정적 분석 도구를 활용해 적은 추가 비용으로 미리 결함을 찾아내는 것이 좋다 정적 분석이라는 것은 실행 중에 결정될 수 있는 정보를 모르는 상태에서 실행 의미를 예측하는 것이기에 태생적으로 완벽할 수 없다. 정적 분석도구는 소스코드를 분석하여 다음과 같은 작업을 수행 잘 알려진 버그에 대해서 리포팅 코딩 표준에 맞지 않는 코딩 내용을 검출 실행되지 않는 죽은코드 등을 검출 코드의 복잡도를 계산 -> 정의된 규칙 기반으로 개발자가 작성한 ..
2021.05.02 -
도커를 활용한 DevOps 환경 구축
Dockerfile : 텍스트 형식으로 구성된 이미지를 생성하는 명령어의 집합 텍스트 파일 명령어는 주로 대문자로 표현 Dockerfile 명령어 FROM : 어떤 이미지를 기반으로 할지 설정하는 명령. 필수 항목 MAINTAINER : 작성자를 지정하는 명령. 주로 이름과 메일로 표현하나 필수항목은 아님 RUN : 베이스 이미지에서 스크립트나 명령어를 실행시키는 명령 CMD : 컨테이너에서 실행할 명령어를 실행시키는 명령 ENTRYPOINT : 컨테이너 시작 시 스크립트나 명령을 실행시키는 명령 EXPOST : 호스트와 연결할 포트 번호를 설정하는 명령 WORKDIR : 명령을 실행하는 작업 디렉토리를 설정하는 명령 ENV : 환경변수를 설정하기 위한 명령 ADD : 이미지에 호스트의 파일과 디렉토리를..
2021.05.01 -
DevOps를 위한 도커 이해
IT 인프라 운영방식의 전환 - IT 인프라 운영은 클라우드 컴퓨팅 환경으로 급속히 전환되고 있음 클라우드 컴퓨팅 가상화 - 클라우드 컴퓨팅의 핵심 기술은 '가상화' 클라우드 컴퓨팅 기존의 서버, 스토리지, 네트워크 등의 하드웨어 위에서 동작하는 가상화 환경 하드웨어 구매, 운영유지를 효과적으로 관리하여 비용 절감 가상화 물리적인 하드웨어를 논리적으로 추상화 가상화를 통해 유휴 자원의 사용 효율성을 증대 CPU, 메모리, 스토리지, 네트워크 등 가상화 가상화의 예 가상화는 대상 및 사용 유형에 따라 다양하게 분류 하드웨어 리소스 별 가상화 : CPU 및 메모리 가상화, 스토리지 및 네트워크 가상화 사용 유형 별 가상화 : 서버 가상화, 데스크톱 가상화, 데이터 및 애플리케이션 가상화 등 가상화의 방법 가..
2021.05.01 -
DevOps의 기초, 로컬 개발 이해
개발 환경 관련 요인 비즈니스 프로젝트 목적 기술 개발 조직 로컬 개발 환경 JDK : 객체지향 프로그래밍 언어 자바 개발 도구 Spring Tool Suite 4 : 스프링 기반 애플리케이션 개발을 지원하는 도구 Github :분산 환경 소스코드 버전 관리 도구 깃(Git)의 글로벌 웹 호스팅 서비스 Git / GitHub 사용 깃허브 - 원격 저장소 생성 : New Repository 깃 - 원격 저장소 복제 : 원격 저장소 first-repository를 로컬 저장소로 가져오기 깃 - 로컬 저장소 커밋 : 파일을 로컬 저장소로 커밋 깃 - 원격 저장소 푸시 : 로컬 저장소 변경 사항을 원격 저장소로 푸시 깃 - 원격 저장소 풀 : 원격 저장소 변경 사항을 로컬 저장소로 풀 깃 - 소스코드 충돌과 해..
2021.05.01