반응형

2736

DevOps : SW 구조 분석 도구 개념 및 종류

아키텍쳐 개요 소프트웨어 아키텍처는 여러 개의 동시 뷰, 즉 관점에 따른 다양한 형태로 접근해야 합니다. 화면 좌측 상단의 거리가 소스코드 같은 저수준이라면, 화면 우측 상단의 큰 지도가 아키텍처 같은 고수준이라고 할 수 있습니다. 지도를 확대/축소하면서 현재 위치를 확인하듯이 소프트웨어도 다양한 레벨의 관점으로 시스템을 바라보면서 다룰 수 있어야 빈번한 요구사항 변경 및 버그에 대응하기 쉽고 유지보수가 수월해집니다. 기존 개발팀이 개발을 끝낸 후 그 제품 유지보수를 담당하는 개발자에게 산출물 또는 기술문서가 필요한데, 특히 이런 문서들은 프로젝트에 새로운 멤버가 들어왔을 때 기존 개발자들과 개발속도뿐만 아니라 호흡을 맞추는 데 큰 도움이 됩니다. 그러나 훌륭한 산출물이 되기 위해서는 실제 소프트웨어의 ..

SW/DevOps 2019.12.08

DevOps : 정적 분석의 이해와 관련 도구 소개

소스코드 리뷰의 기법을 나누는 방법은 얼마나 정적이고 프로세스적으로 구분하느냐에 따라 화면 상단에 코드 리뷰 스펙트럼으로 구분할 수 있고, 자동화된 도구로 이루어지는 정적분석인 코드 인스펙션과 사람에 의해 수동적으로 수행되는 코드 리뷰 등으로 나눌 수 있습니다. 코드 리뷰 중 정형화된 방법으로는 주로 개발 단계 후반의 결함 발견에 집중하고, 손쉬운 방법의 측면은 결함 발견뿐 만 아니라 아이디어 회의, 팀원 간 지식 공유의 목적도 있습니다. Peer review는 두세 명이 진행하는 형태로 코드 작성자가 자신의 코드를 설명하고, 다른 사람이 아이디어를 제안하거나 결함을 발견하는 방식입니다. 주로 시니어 개발 사수가 주니어 개발자를 멘토링할 때 사용하지만, 시니어 개발자의 역량에 따라 품질이 달라질 수 있고..

SW/DevOps 2019.12.07

평범한 사람이 컴퓨터 프로그래머가 되는 것이 얼마나 어려운가요?

평범한 사람이 프로그래머가 되는 것은 어렵습니다. 평범한 사람이 충분히 똑똑하지 않기 때문이 아닙니다. IQ가 낮은 사람은 높은 IQ를 가진 사람보다 이해하거나 무언가를 수행하는 데 시간이 더 걸릴 수 있지만, 대부분의 사람들은 역량을 발휘할 수 있습니다. 프로그래밍하는 법을 배우기에 충분히 똑똑합니다. 문제는 대부분의 사람들이 몇 시간 동안 중단되지 않고 열심히 집중하기를 원치 않습니다. 프로그래머는 대부분의 날에 몇 개월 또는 몇 년 동안 반복 작업 및 생각을 해야 합니다. 어떠한 분은 대수술을 받을 때까지 25 년 동안 꽤 괜찮은 프로그래머 였고 그 후에 더 이상 프로그램을 할 수 없다는 것을 알게 되었습니다. 그는 여전히 똑똑한 사람이었습니다. 그는 여전히 면접을 통과하고 짧은 퍼즐을 풀고 면접 ..

일상/IT 2019.12.06

DevOps :CI : Docker로 구축하는 방법

지속적 통합환경 구축해야 할 큰 요소는 깃랩, 젠킨스, 소나큐브입니다. 계획 및 일감관리는 웹 인터페이스를 지원하는 설치형 깃을 사용하고, 젠킨스가 소스코드가 커밋되는 것을 감지하거나 스케줄에 따라 소스코드를 통합하고 빌드하면서 정적 분석을 하면 결과는 소나큐브 대시보드에서 확인할 수 있습니다. 이 환경을 도커를 활용하여 구축한다면 기존 방식보다 매우 빠르고 쉽게 구축할 수 있습니다. 이를 Docker-Compose로 진행해 보겠습니다. Docker-Compose.yml을 직접 작성하지 않고 만들어져서 깃허브에 올라와 있는 것을 활용하도록 하겠습니다. 화면에 있는 깃허브 레파지토리를 클론해서 사용하겠습니다. STS의 Git 플러그인 기능을 통해서 조금 전 소개했던 깃 레파지토리를 클론합니다. 다운받은 위..

SW/DevOps 2019.12.05

DevOps : Docker Compose : 기초, 개념

Docker Compose란? Docker-Compose는 여러 개의 컨테이너를 일괄적으로 관리하는 도구입니다. 대부분의 시스템은 여러 대의 서버가 유기적으로 연계되어 마치 하나의 서비스처럼 작동합니다. 이때 다수의 컨테이너 각각을 개별적으로 다루는 것보다 여러 개를 통합적으로 관리하는 것이 효과적입니다. Docker-Compose는 도커와는 별개의 도구이지만 Docker ce for windows에서 기본적으로 제공됩니다. docker-compose.yml Docker-Compose.yml은 Docker-Compose의 구성 파일입니다. 한 파일 안에 여러 컨테이너 설정 내용을 저장합니다. 도커 애플리케이션을 위한 서비스, 네트워크, 볼륨 등을 정의합니다. 버전별로 차이점이 있으며 현재 최신 버전은 버..

SW/DevOps 2019.12.04

DevOps : 애플리케이션을 도커 이미지로 구축하는 방법

스프링 부트 애플리케이션을 직접 만들 것은 아니고 스프링에게 제공하는 기본 예제 프로젝트를 활용할 것입니다. 먼저 STS를 실행한 상태에서 시작하겠습니다. 파일에서 New를 선택해서 Import Spring Getting Started Contents를 선택합니다. Docker로 검색해서 Spring-boot-Docker 샘플을 선택합니다. 아래 코드셋의 이니셜을 체크 해제하고 Finish 버튼을 클릭합니다. Gs-spring-boot-Docker 프로젝트가 생성되면서 빌드 되고 있습니다. 그럼 소스코드를 살펴보겠습니다. 간단한 스프링 부트 프로젝트로서 하나의 파일로 구성되어 있습니다. 웹브라우저에서 기본 주소로 서비스에 접속하면 Hello Docker World라는 메시지를 출력하는 서비스입니다. 서비..

SW/DevOps 2019.12.03

DevOps : Dockerfile 개념, 사용법

Dockerfile 도커파일은 텍스트 형식으로 구성된, 도커 이미지를 생성하는 명령어의 집합입니다. 도커파일을 이용해서 인프라 구성정보를 관리하고 도커 빌드 명령을 통해 도커 이미지를 생성할 수 있습니다. 도커 파일은 텍스트 파일이며 명령어는 주로 대문자로 표현합니다. 도커 명령어 목록입니다. 베이스 이미지를 지정하는 프롬 명령, 도커파일 작성자를 나타내는 메인테이너 명령, 베이스 이미지에서 명령어을 실행시키는 런 명령, 호스트와 연결할 포트 번호를 설정하는 익스포즈 명령, 환경 변수를 설정하는 ENV 명령, 파일을 이미지에 추가 하는 ADD 명령 등이 있습니다. 명령어별로 하나씩 설명 드리겠습니다. 도커 파일은 기반이 되는 이미지에 대한 정보가 있어야 합니다. 이를 베이스 이미지라고 합니다. 프롬은 베..

SW/DevOps 2019.12.02

DevOps : Docker 실행, 목록 확인, 시작, 정지, 재시작, 삭제 로그 명령어

도커 컨테이너의 기본 명령어들입니다. 컨테이너를 실행하는 Run, 컨테이너를 시작하는 Start, 재시작하는 Restart, 컨테이너를 정지하는 Stop 그리고 컨테이너를 삭제하는 Rm 명령 등이 있습니다. 도커 컨테이너의 실행은 docker container run 명령을 사용합니다. 컨테이너를 대화식으로 실행하느냐 아니면 백그라운드로 실행하느냐에 따라 표준 입력, 출력을 연결하는 옵션을 사용하게 됩니다. 컨테이너 목록 확인 docker container ls 명령을 통해 도커 컨테이너의 가동 상태를 확인할 수 있습니다. -a 옵션을 사용해서 실행 정지 중인 것을 포함하여 모든 컨테이너의 상태를 확인 할 수 있습니다. 결과는 컨테이너 아이디, 이미지, 컨테이너에서 실행되고 있는 명령, 컨테이너 생성 후..

SW/DevOps 2019.12.01

인공지능(딥러닝)이 주식 시장을 예측할 수 있습니까?

가능합니다. 그러나 매우 열악합니다. 사실 통계, 기계 학습 또는 기술 분석에 관계없이 모든 방법은 주식 시장을 제대로 예측하지 못합니다. 그렇지 않으면, 시장을 이길 수 있다는 것은 잘 알려진 사실입니다. 신경망이 나쁜 예측 모델이기 때문이 아니라 실제로 가장 강력한 네트워크 중 하나입니다. 그러나 주식 데이터 단순히 너무 많은 노이즈가 있기 때문에 어렵습니다. 또한 의미있는 예측을 하기 위한 데이터에 상관 관계가 뚜렷하게 없습니다. 가격 이외의 여러 입력 변수를 사용해 볼 수 있습니다. 아마도 주식, 소셜 미디어 게시물, 뉴스 발표, 기본 사항, 날씨 데이터, 공장의 위성 이미지 등을 통합했습니다. 운이 좋으면 유용한 정보를 찾을 수도 있습니다. 운이 좋으면 소수의 사람들이 액세스 할 수 있는 방대한..

일상/주식 2019.11.30

python : 파일 또는 셸을 통해 스크립트를 실행하는 방법 , 종류

파이썬 스크립트를 실행할 수 없다면 프로그래밍은 의미가 없습니다. Python 스크립트를 실행하면 인터프리터가 Python 프로그램을 컴퓨터가 이해할 수 있는 것으로 변환합니다. Python 프로그램 실행은 두 가지 방법으로 수행 할 수 있습니다. 파이썬 스크립트를 파일로 실행 일반적으로 프로그래머는 실제 환경과 독립형 스크립트를 작성합니다. 그런 다음 ".py"확장자로 파일을 저장합니다. 이는 운영 체제 및 프로그래머에게 파일이 실제로 Python 프로그램임을 나타냅니다. 인터프리터가 호출 된 후 파일을 읽고 해석합니다. Python 스크립트가 Windows와 Unix 기반 운영 체제에서 실행되는 방식은 매우 다릅니다. 차이점과 Windows 및 Unix 플랫폼에서 Python 스크립트를 실행하는 방법..

SW/Python 2019.11.29

DevOps : 오픈소스 소프트웨어 : 오픈소스 라이센스 : 개념

DevOps란? 4차 산업혁명시대 기술 변화 가속화로 새로운 SW기반 서비스들이 등장하고 있습니다. 시장의 변화, 고객의 요구에 빠르게 대응하는 것이 중요한 것입니다. 따라서, 빠른 시도, 빠른 실패를 통한 점진적 서비스 개선만이 현재로 최선의 방법입니다. 결론적으로, 신속한 변경, 검증, 반복, 개선이 가능한 SW 서비스 개발/운영 방식 필요한 것입니다. 결국, DevOps는 이러한 요구에 맞춰 나온 개념입니다. 기술과 시장의 빠른 변화에 대응하기 위한 최신 소프트웨어 개발 운영 트렌드를 뜻합니다. Development + Operations의 합성어입니다. 역할을 나누고 경계를 나누는 것보다 소통, 협업, 통합을 중시하는 사상입니다. 즉, 서비스 중심으로 기술, 도구, 프로세스, 문화, 조직 등을 망..

SW/DevOps 2019.11.28

DevOps 공정 : 프로세스 개념, 특징

DevOps 수명 주기 계획 - 개발 - 빌드 - 테스트 --> 개발 모니터링 - 운영 - 배포 - 릴리즈 --> 운영 DevOps의 수명 주기는 위와 같습니다. DevOps는 수명주기를 짧게 짧게 반복을 합니다. 이렇게 짧게 짧게 여러번 반복을 하며 수명주기를 순환할 수 있는 이유는 바로 자동화입니다. Saas (Software as a Service)는 구글 무선, 스프레드 시트, 프리젠테이션 등이 예입니다. 이러한 좋은 소프트웨어들은 클라우드 형태로 제공해주고 있습니다. 결국 이러한 소프트웨어들이 수명주기를 짧게할 수 있도록 도와줍니다. 애자일 개발 계획 변경 요구 검토 및 개선 작업 계획을 수립합니다. 우선 순위에 따른 요구사항을 관리합니다. 또 작업 상황 가시화 및 추적을 진행합니다. 스크럼, ..

SW/DevOps 2019.11.27

영상인식 : Keras : Resnet 개념, 사용법

Residual 네트워크의 약자인 ResNet은 많은 컴퓨터 비전 작업의 중추로 사용되는 클래식 신경망입니다. 이 모델은 2015 년 ImageNet 챌린지에서 우승했습니다. ResNet의 근본적인 혁신은 150개 이상의 레이어로 매우 깊은 신경망을 성공적으로 훈련 할 수 있다는 것입니다. ResNet 이전에는 그라디언트 소실 문제로 인해 딥 뉴럴 네트워크의 학습은 매우 어려웠습니다. ImageNet 2012의 우승자이자 딥 러닝에 초점을 맞추기 시작한 모델인 AlexNet은 8개의 컨볼루션 레이어, VGG 네트워크는 19 개, Inception 또는 GoogleNet은 22 개 레이어, ResNet 152는 152 개 레이어로 구성되었습니다. 그러나 단순히 계층을 함께 쌓아 네트워크 깊이를 늘리는 것은..

SW/영상인식 2019.11.26

python : 머신러닝 : KNN : 실습, 예제

from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score import numpy as np 실습에 사용할 라이브러리를 import 합니다. dir = './gdrive/My Drive/Colab Notebooks/' trainData = np.genfromtxt(dir+'process_data_train.csv',delimiter=',', skip_header=1) X_train = trainData[:,:-1] y_train = trainData[:,-1] testData = np.genfromtxt(dir+'process_data_test.csv',delimiter=',', skip_head..

SW/머신러닝 2019.11.25

python : 머신러닝 : LinearRegression, Ridge, Lasso : 예제, 실습

from sklearn.linear_model import LinearRegression, Ridge, Lasso from sklearn.metrics import r2_score,mean_absolute_error, mean_squared_error import numpy as np 우선 라이브러리를 선언합니다. dir = './gdrive/My Drive/Colab Notebooks/' trainData = np.genfromtxt(dir+'oil_data_train.csv',delimiter=',', skip_header=1) X_train = trainData[:,:-1] y_train = trainData[:,-1] 훈련할 데이터를 로드합니다. 여러 본인의 데이터를 활용해도 무방합니다. test..

SW/머신러닝 2019.11.24

DevOps : Docker 기본 명령

도커 허브 먼저 Docker의 공식 레파지토리인 서비스인 도커 허브부터 살펴보겠습니다. 도커 허브는 도커 레지스트리의 SaaS 버전이라고 생각하면 됩니다. 도커 이미지들을 등록하고 공유할 수 있습니다. 도커허브는 공개, 비공개 저장소 서비스를 제공하는데 비공개 저장소는 유료입니다.공개된 Docker 이미지는 가입하지 않아도 이미지를 검색하고 상세정보를 확인할 수 있으며 다운로드 할 수 있습니다. 도커 이미지 명령 도커 이미지를 다루는 명령어들입니다. 도커 이미지를 검색하고 다운로드하는 명령, 도커 호스트에 다운로드된 이미지 목록을 확인하는 명령, 하나의 이미지 상세정보를 확인하는 명령 그리고 도커 이미지를 삭제하고 태그를 수정하는 등의 명령이 있습니다. 도커 이미지 검색 도커 이미지를 검색하는 명령어입니..

카테고리 없음 2019.11.23

DevOps : Docker : 설치, 예제, 개념

도커 플랫폼 도커를 설치하기 전에 도커 에디션에 대해서 살펴보겠습니다. 도커는 두 가지 방식의 라이선싱 모델을 제공합니다. 커뮤니티 에디션과 엔터프라이즈 에디션입니다. Community Edition, 줄여서 CE는 오픈 소스 버전으로 누구나 무료로 사용할 수 있습니다. Enterprise Edition, EE는 상용 버전으로 인증이 완료된 플러그인이나 보안 기능 등 추가 기능과 지원을 받을 수 있습니다. 실습에서는 CE 에디션을 사용합니다. 도커 CE가 지원하는 플랫폼입니다. 크게 데스크톱과 서버로 구분할 수 있습니다. 도커는 원래 리눅스 커널을 사용하기 때문에 리눅스 상에서 작동하지만 개발 환경을 제공하기 위하여 데스크톱용 클라이언트 도구를 제공합니다. 도커 설치 Docker Desktop for M..

SW/DevOps 2019.11.22

DevOps : 도커 : 개념, 방식, 구조, 기반 기술

도커 도커는 2013년에 등장한 컨테이너 기반 가상화 도구입니다. Docker는 컨테이너를 위한 플랫폼으로서 도커 엔진을 통해 컨테이너를 관리합니다. Docker가 설치된 곳이라면 어느 곳이라도 컴퓨팅 환경에 구애받지 않고 애플리케이션을 신속하게 배포, 확장할 수 있으며 문제없이 실행되는 것을 보장합니다. 이를 위해서 도커는 애플리케이션을 표준화된 유닛으로 패키징하는데, 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것을 포함시킵니다. 이 실행 가능한 패키지를 이미지라고 하며, 이미지를 실행한 인스턴스를 컨테이너라고 합니다. 이것은 프로그램과 프로세스라는 개념과 비교하여 설명할 수 있습니다. 흔히 프로그램이라고 하면 실행 가능한 파일을 지칭하고, 이 프로그램이 실행된 ..

SW/DevOps 2019.11.21

DevOps : 가상화와 컨테이너 : 개념, 기능

클라우드 컴퓨팅 환경에서 가장 각광받는 기술이며, DevOps의 구제적인 실현 가능성을 높여준 도커에 대해서 알아 볼 것입니다. 클라우드 컴퓨팅 환경에서의 핵심 개념인 가상화와 컨테이너의 개념에 대해서 알아보도록 하겠습니다. IT 인프라 운영 방식의 전환 IT 인프라 운영방식이 클라우드 컴퓨팅 환경으로 급속히 전환되고 있습니다. 온 프레미스는 일반적이고 전통적인 시스템 운영 방식으로 자체적으로 데이터센터를 보유하고 시스템 구축부터 운영 유지를 모두 직접 수행하는 것을 말합니다. 물리적인 하드웨어를 직접 구입하고 구축해야 하기 때문에 초기 투자비용이 크고 운영유지가 힘든 단점이 있습니다. 또한 고정된 방식으로 컴퓨팅 자원을 활용하기 때문에 운영 탄력성이 떨어져서 자원 활용에 비효율적인 측면이 있습니다. 오..

SW/DevOps 2019.11.20

DevOps : 프로젝트 빌드 관리 : 방법, 개념

아파치 메이븐 아파치 메이븐은 독립적으로 설치/실행할 수 있고 명령어 기반, 즉 Command 라인 인터페이스로 사용할 수 있습니다. 아파치 메이븐은 소프트웨어 객체 모델 기반의 프로젝트 관리 도구입니다. 프로젝트 관리에 필요한 대부분의 작업을 표준화했고 자동화하였습니다. 프로젝트 관리를 위한 여러 요소들에 대해서 일관된 기준을 제시해줍니다. 예를 들어 디렉토리 구조의 경우 프로젝트마다 혹은 개발자마다 다른 구조를 가져갈 수 있는데, 메이븐을 사용하게 되면 표준에 가깝게 정형화된 구조를 사용하여 많은 혼란을 줄일 수 있습니다. 빌드 절차 역시 메이븐에서 추상화한 프로세스를 따르면 일관된 방식으로 프로젝트를 관리/운영할 수 있습니다. 메이븐의 또 하나의 가장 큰 장점은 자동화된 의존성 관리입니다. 소프트웨..

SW/DevOps 2019.11.19
반응형