반응형

SW 2016

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

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

SW/DevOps 2019.11.20

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

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

SW/DevOps 2019.11.19

DevOps : 소스코드관리 : Git 기능 개념

Pull Request 일반적으로 기업의 프로젝트나 오픈소스 프로젝트의 경우 원격 저장소의 쓰기 권한을 일반 개발자가 가지고 있지 않고 읽기 권한만 가지고 있는 경우가 많습니다. 저장소를 클론했을 때 나의 로컬에서 작업은 가능하지만, 내용을 수정해서 반영하고 싶은 경우에는 쓰기 권한이 없기 때문에 Push를 할 수가 없습니다. 이때 해당 원격 저장소의 쓰기 권한을 직접적으로 받아내기는 어렵기 때문에 해당 레파지토리를 나의 원격 저장소로 포즈한 다음에 이것을 클론하여 작업하고 Push해서 Pool Request를 요청하여 변경사항에 대한 반영을 요청할 수 있습니다. Fork 요청받은 소스코드 저장소 관리자는 해당 내용을 검토해서 반영 여부를 적용할 수 있습니다. 포크가 완료되면 나의 계정에 저장소가 생성된..

SW/DevOps 2019.11.18

DevOps : 소스 코드 관리 : 기본 개념

소스코드를 개발할 때는 공동의 작업뿐 아니라 개발자 개인의 작업에서도 버전 관리가 필수적입니다. Git의 저장소는 원격 저장소와 로컬 저장소, 두 가지가 있습니다. 원격 저장소는 다수의 인원이 소스코드를 공유하기 위한 공간입니다. 로컬 저장소는 개발자 개인을 위한 저장 공간입니다. 일반적으로 로컬 저장소에서 개발자들이 작업을 하고 공유를 위해서 원격 저장소로 내용을 업로드합니다. 업로드된 내용은 다른 개발자들이 사용하기 위하여 각자의 로컬 저장소로 복제할 수 있습니다. 먼저 Gitup에 로그인합니다. 화면에서 뉴 레파지토리 버튼을 클릭하고 레파지토리 이름에 ‘First¬Repository’를 넣습니다. 리드미 파일을 초기화하도록 체크하고 Create합니다. 레파지토리가 생성되었고, README.md 내용..

SW/DevOps 2019.11.17

DevOps : 개발환경구축 : 일반적인 방법

로컬 개발환경 이해를 돕기 위한 간단한 형태의 로컬 개발환경을 소개해드리겠습니다. 그리고 로컬 개발환경 구축을 간단하게 따라해보도록 하겠습니다. 실제 소프트웨어 개발 프로젝트에서의 개발환경은 매우 다양한 요건과 관련이 있습니다. 비즈니스에 따라서, 프로젝트 목적에 따라서, 기술에 따라서, 개발조직에 따라서 다양한 형태로 개발환경을 구성할 수 있습니다. 이 개발환경은 자바 기반의 애플리케이션 개발을 위한 것으로 자바 기술이 제일 근간이 됩니다. 개발도구 역시 자바로 개발된 Spring Tool Suite 4를 사용합니다. Spring Tool Suite 4는 이클립스를 기반으로 한 통합 개발환경 도구로서 이클립스의 기본 기능을 그대로 유지하면서 Spring 애플리케이션 개발을 위한 부가적인 기능들이 추가된..

SW/DevOps 2019.11.16

1-2. 소프트웨어에 대한 인식의 중요성

2014년 2월 페이스북은 왓츠앱을 인수하였습니다. 당시에 어마어마한 20조원으로 인수를 하여, 큰 이슈가 되었습니다. 결국 현재 그 인수는 상당히 성공적이었다고 할 수 있습니다. 만약 우리나라 기업이었다면, 이러한 현실이 가능했을까요? 아마 쉽지 않았을 것입니다. 그러한 이유는, 우리나라의 대부분의 큰 기업들은 HW 제조 기업입니다. SW기업에 대한 가치와 투자를 하는 방식이 기존과는 상이하기 떄문입니다. 얼마나 회사의 이익 창출에 도움이 되었는 가에 대해 생각해 보아야 합니다. 하드웨어 제조 기업에서의 소프트웨어 단가는 계산하는 방법이 거의 존재하지 않습니다. 원가 비중의 50% 이상 차지하는 소프트웨어 원가 계산 방식이 없어, 프로젝트 관리 방법에 문제가 생기기 마련입니다. 결국, 하드웨어와 소프트..

1-1. 한국 소프트웨어 산업의 경쟁력 (요약)

한국 소프트웨어 성장 잠재력은 엄청나게 높을까요? sw 산업 발전의 핵심 요소는 인력 양성이라 할 수 있습니다. 미국의 약 7분의 1 수준으로, 미국에 상대적인 크기를 생각한다면 매우 높은 비중이라는 것을 할 수 있습니다. 따라서 성장 잠재력은 엄청나게 높다고 할 수 있습니다. 4차 산업 혁명에서 소프트웨어 역량은 매우 중요해지고 있습니다. 자동차 회사 역시, 하드웨어 회사가 아니라 소프트웨어 회사라고 칭하는 경우도 있습니다. 우리나라는 제조업 강국입니다. 제조업에서도 소프트웨어의 비중이 커져가고 있습니다. 만약 소프트웨어 역량을 확보하지 못한다면, 도태될 확률도 높다고 할 수 있습니다. 우리나라는 소프트웨어 산업은 왜 발전하지 못했을까요? 주요 원인은 소프트웨어의 제값을 받지 못한다는 것입니다. 제조 ..

DevOps : 관련 도구 : 종류, 소개

위 그림은 DevOps 수명 주기 전반의 도구 사슬을 표현하였습니다. 도구 사슬의 의미는 각 영역이 별개가 아니라 도구 간 연계를 통해서 시너지를 이룬다는 측면을 강조한 것입니다. 각 영역별로 오픈소스 위주의 도구를 나열하였습니다. 계획 영역에서는 협업, 일감 관리를 위한 도구를 주로 사용합니다. Redmine이 잘 알려진 오픈소스 도구이며, 실제 기업 환경에서는 상용 도구를 주로 사용하기도 합니다. 개발 영역에서는 코드 버전 관리를 위한 도구를 주로 사용합니다. 과거에는 Subversion이라는 전통적인 도구를 많이 사용했지만, 최근에는 분산 환경에 적합한 Git을 많이 사용합니다. 빌드 영역에서는 Compile, Packaging, 단위 Testing을 위한 도구를 사용합니다. Maven은 가장 유명..

SW/DevOps 2019.11.13

few shot learning : 개념, 접근법, 소개

머신 러닝의 few shot learning 이해 머신 러닝은 최근 몇 년간 엄청난 성장을 경험했습니다. 이러한 놀라운 성장을 이끄는 요인 중 일부는 알고리즘 및 학습 모델의 정교성 향상, 기계의 컴퓨팅 기능 향상 및 빅데이터의 가용성 증가를 포함합니다. 머신 러닝 경험이 5 년 이상이고 현재 사람들에게 자신의 기술을 가르치고있는 AndreyBu는 “데이터는 성공을 보장하는 머신 러닝 훈련 학습 모델의 핵심입니다. 충분하고 양질의 데이터를 제공하는 학습 모델은 더 정확한 결과를 얻을 수있을 것”이라고 덧붙였습니다. 그러나 때로는 모델의 정확도를 높이기 위해 충분한 데이터를 축적하는 것은 비현실적이고 달성하기 어렵습니다. 예를 들어, 엄청난 비즈니스 상황에서 샘플 라벨링은 비용이 많이 들고 관리하기가 어렵..

SW/영상인식 2019.11.12

DevOps : 사례, 예시

유저 스토리 워크숍 유저 스토리 워크숍을 통해서 개발해야 할 내용. 즉, 제품 백로그 아이템을 식별할 수 있습니다. 이 과정에서는 사람들 간의 아이디어 교환, 소통 등의 협업을 통해서 제품에 담고자 하는 기능과 우선순위를 정리합니다. 포스트잇을 활용해서 자신의 생각을 표현하고 내용을 간략하게 정리합니다. 그리고 다른 사람들에게 설명하면서 사용자가 요구하는 기능의 구체적인 사용 사례, 흐름까지 스토리로 도출합니다. 앞서 도출한 내용들은 도구를 활용하여 추적 관리할 수 있습니다. 아틀란시아사의 지라라는 도구를 사용하여 백로그 아이템을 등록할 수 있습니다. 에자일 개발에 있어 가장 대중적으로 사용하는 상용 소프트웨어 중 하나입니다. 실제 기업 환경에서는 모든 것을 다 오픈소스 소프트웨어로 사용할 수는 없습니다..

SW/DevOps 2019.11.11

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

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

SW/DevOps 2019.11.09

영상인식 : Keras : Transfer Learning : 기존 모델에 새로운 클래스 학습 : 예제, 실습

깃허브에 존재하는 좋은 코드들을 활용하였습니다. 이번 예제에서는 CIFAR10 클래스를 우선적으로 5개만 훈련을 시킵니다. 그 다음에, 훈련된 모델을 가지고 레이어 마지막 부분을 수정하여 10개의 클래스로 수정해 훈련을 진행합니다. 해당 결과와 코드를 확인해 보겠습니다. import numpy as np from matplotlib import pyplot as plt import keras from keras.datasets import cifar10 from keras.layers import Dense, Convolution2D, Flatten, Activation, MaxPooling2D, Dropout from keras.models import Sequential from keras.utils..

SW/영상인식 2019.11.08

영상인식 : 케라스 : CIFAR10 : TRANSFER LEARNING : 예제

기초적으로 제공되는 imageNet을 활용하여 구현을 진행하였습니다. 좋은 깃허브에 있는 코드를 참고하여 구현을 진행하였습니다. python 버전이나 상이한 부분들을 수정하여 진행하였습니다. from keras.models import load_model import numpy as np from tqdm import tqdm from keras import models from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D from keras.applications.vgg16 import VGG16,pre..

SW/영상인식 2019.11.07

왜 파이썬은 강력한 언어일까?

최근 파이썬에 대한 개발을 진행하다보니 파이썬에 대한 관심이 전보다 많아졌습니다. 과연 파이썬은 왜 강력한 언어 중 하나로 이야기될까요? 파이썬이 가장 강력한 언어로 여겨지는 데는 여러 가지 이유가 있지만, 그중에서 가장 중요한 것은 파이썬이 90 % Turing이 아니라는 것입니다. 파이썬은 튜링 완전(turing-complete)입니다. 그러한 주장을 할 수있는 다른 언어는 무엇이 있을까요? 둘째, 파이썬은 무제한 들여 쓰기를 지원합니다. 대부분의 언어는 꺾쇠 괄호 또는 중괄호로 제한되며 일부 극심한 언어는 40 또는 80 열로 제한됩니다. 셋째, Python은 이제 녹색 이외의 다른 화면 색상과 CGA를 초과하는 해상도를 지원합니다. 마지막으로, 파이썬은 양수와 음수를 모두 표현할 수 있으며 덧셈,..

SW/Python 2019.11.06

CIFAR10 : 새로운 클래스 인식, 테스트 데이터 구성 : 실습

과제 """ [HW3] CIFAR-10 classification * CIFAR-10 testset 소개 32x32 three color = 3072 dimensions per sample 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭의 10가지 클래스로 이뤄져 있으며, 60000개(트레이닝셋 50000 / 테스트셋 10000)의 이미지(클래스당 6000개)를 포함한 데이터셋. === HW #3 내용 =========================================== * 필수사항 (100점) 1. Model Saver 기능 포함 필요 2. Random sample or sample index 지정하여 visualization & 추정결과 plotting (MNIST 과제..

SW/영상인식 2019.11.04

CIFAR10 : 정확도 90% : visualization, plotting, 실제 이미지 테스트

과제 """ [HW3] CIFAR-10 classification * CIFAR-10 testset 소개 32x32 three color = 3072 dimensions per sample 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭의 10가지 클래스로 이뤄져 있으며, 60000개(트레이닝셋 50000 / 테스트셋 10000)의 이미지(클래스당 6000개)를 포함한 데이터셋. === HW #3 내용 =========================================== * 필수사항 (100점) 1. Model Saver 기능 포함 필요 2. Random sample or sample index 지정하여 visualization & 추정결과 plotting (MNIST 과제..

SW/영상인식 2019.11.03

CIFAR 10 : Few Shot Learning : 새로운 클래스 인식

과제 """ * CIFAR-10 testset 소개 32x32 three color = 3072 dimensions per sample 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭의 10가지 클래스로 이뤄져 있으며, 60000개(트레이닝셋 50000 / 테스트셋 10000)의 이미지(클래스당 6000개)를 포함한 데이터셋. === HW #3 내용 =========================================== * 필수사항 (100점) 1. Model Saver 기능 포함 필요 2. Random sample or sample index 지정하여 visualization & 추정결과 plotting (MNIST 과제와 비슷) 3. Testset Accuracy 90% ..

SW/영상인식 2019.11.02

머신 러닝에서 파이썬이 왜 그렇게 인기가 있을까요?

산업 및 과학 분야의 소프트웨어 엔지니어로서 15 년의 경험을 가진 물리학자의 의견을 요약해보았습니다. 어떠한 인사이트로 이야기를 했는지 알아보겠습니다. 파이썬은 과학계의 새로운 포트란입니다. 비 컴퓨터 과학자들에게 매우 인기가 있으며 모든 종류의 응용 프로그래밍 문제에 대해 엄청난 도구 상자를 제공합니다. 매우 인기가 있기 때문에 파이썬에는 거대한 에코 시스템이 제공됩니다. 파이썬은 최소한 기본을 배우기 쉽습니다. 따라서 파이썬으로 시작하기 위한 요구 사항은 특히 컴퓨터 과학 지식이 없는 사람들에게는 상당히 낮습니다. 물리학자 동료들과 이야기 하면서 Java, C#과 같은 언어는 다소 복잡한 인프라, 즉 Eclipse, Maven, 배포 시스템을 처리해야 할 필요성과 함께 "복잡한 기술", "배우기 어..

SW/머신러닝 2019.11.02

Codility란 무엇이며, 기업들은 어떻게 최대한 활용할까요?

Codility는 코더의 스킬 셋을 테스트하기 위한 플랫폼입니다. 테스트를 통해 채용 프로세스 중에 코더에게 기술 화면을 제공 할 수 있습니다. 아마도 가장 큰 장점은 테스트가 자동으로 제공되고 점수가 매겨져 기술이 아닌 채용 담당자가 전 세계의 후보자를 관리 할 수 ​​있다는 것입니다. 알고리즘 테스트에 관한 것은 매우 좁은 기술 세트를 테스트한다는 것입니다. 대부분의 경우, 소프트웨어 개발자는 알고리즘을 작성하는 데 많은 시간을 소비하지 않습니다. 기존 라이브러리의 알고리즘을 활용하면서 더 높은 수준의 문제에 중점을 둡니다. 이로 인해 개발 프로세스는 더 빠르고 버그가 덜 발생합니다. 따라서 코딜리티 테스트는 응시자가 응용 프로그램의 기본 빌드 블록을 구축 할 수 있는지 확인하는 데 유용합니다. 문제..

SW/알고리즘 2019.11.01
반응형