[소프트웨어공학] DevOps란 / 배포전략
·
공부/소프트웨어공학
데브옵스... 이게 무엇이냐... Development + Operations = DevOps! 다시 말해 개발과 운용을 합친 방법론이다. 기존의 silo 방식(곡물 저장소처럼 큰 벽으로 막힌 것처럼 팀이 서로 벽을 치고 일하는 상황)으로 일하는 환경에서는 빠르게 변하는 운용팀의 상황을 개발팀이 따라가지 못한다. 그 반대의 상황이 일어나기도 한다. software를 개발하는 과정에서 가장 중요한 것은 stake holder의 요구사항에 신속하게 대응하는 것이다. PLAN ➡️ CODE ➡️ BUILD ➡️TEST ➡️ RELEASE ➡️ DEPLOY ➡️ OPERATE ➡️ MONITOR가 무한 반복하는 것이 DevOps의 특징인데 이를 하나하나 사람이 하기란 쉽지 않다. 그래서 필수적으로 붙는 것이 C..
[소프트웨어공학] 애자일(Agile)이란?
·
공부/소프트웨어공학
Agile Process, Agile Software Development, Agile Methodology ... 부르는 이름도 많은 애자일! "고객에게 가치가 있는 software를 일찍, 지속적으로 전달하여 고객을 만족시켜라." 애자일은 software를 개발하는 방식 중 하나다. 이전에 설명한 폭포수 방식과 개념적으로 반대되는 방식이다. 폭포수가 일방적으로 완벽히 정해진 스케줄을 그대로 따르며 선형적으로 진행하는 방식이었다면 애자일은 작은 iteration(또는 sprint, 주기)마다 제품을 만들고 고객과 끊임없이 소통하며 더 나은 production을 제작하는 방식이다. IID(Iterative and Incremental Development) 방식 채용! 작업 우선순위가 중요하며 시간이 지..
[소프트웨어공학] RAD(Rapid Application Development)란?
·
공부/소프트웨어공학
RAD(Rapid Application Development) 사용자가 지속적으로 참여할 수 있는, 빠르게 개발할 수 있는 Application 개발 라이프 사이클 모델 라고 하면... 이해하기가 좀 어렵다. 단순하게 말하면 사용자가 직접 참여하여 Application을 개발하는 방식이다. 사용자가 참여한다는 뜻은? 개발이 매우 단순하고 쉽다는 뜻이다. 반복적으로 피드백을 수용하기 때문에 개발 비용이 고정되어 있지 않다. ➡ 높은 수준을 요구하는 개발 환경에는 적합하지 않다. 예를 들어 자율주행자동차(이걸 소비자 입맛대로 만들 수 있다면 매우 위험할 것) ✅ 고객참여 ✅ 신속개발 ✅ 짧은 개발주기 포건시
[소프트웨어공학] 유지보수의 종류
·
공부/소프트웨어공학
유지보수의 종류 ✔ 수정 유지보수(corrective maintenance) 소프트웨어의 오류가 발견되었을 때 이를 수정하는 작업 ✔ 적응 유지보수(adaptive maintenance) 운영체계나 인프라 환경 등이 변화되었을 때 이 변화를 수용하도록 프로그램을 수정하는 작업 회사 정책이 변하거나 법률이 개정되었거나 등등 ✔ 완전 유지보수(perfective maintenance) 기능이나 성능을 개선하거나 새로운 기능을 추가하기 위하여 프로그램을 수정하는 작업 ✔ 예방 유지보수(preventive maintenance) 프로그램 오류가 발생하기 이전, 미연에 방지하기 위해 프로그램을 수정하는 작업 가장 많은 비율로 나타나는 유지보수는 Perfective 유형이다.
[소프트웨어공학] 폭포수(Waterfall) 모델이란?
·
공부/소프트웨어공학
SDLC (Software Development Lift Cycle) 소프트웨어를 개발하는 데 사용하는 시간·비용을 효율적으로 하는 프로세스 SDLC 중 대표적인 모델이 폭포수(Waterfall) 모델이다. 폭포수처럼 위에서 아래로 내려오는 선형 순차적인 모습을 떠올리자. ✔ 폭포수 모델의 특징 - 목적 불확실성 + 수단 불확실성 - 단계별로 나오는 산출물이 명확하다. - 동작하는 소프트웨어에 중점을 두기 보다는 프로세스 중심적이다. - 전 단계가 마무리 되어야 다음 단계로 갈 수 있다. - 사용자의 요구사항을 초기 단계에서 완벽 분석한다(== 목적 불확실성은 초기 단계에서 완벽 해결). - 요구사항 변경이 매우 힘들다. ✔ 폭포수 모델의 문제점 - 최종 개발된 프로덕션과 고객이 요구한 프로덕션이 다른 ..
[Unity] Composite Collider 2D 적용 후 Play 눌렀을 때 화면이 위로 올라가는 현상
·
공부/Unity
제목 그대로, Composite Coliider 2D를 적용한 뒤 플레이를 눌렀을 때 게임 화면이 위로 올라가는 현상이 나온다면 Rigidbody 2D의 Body Type이 Dynamic인 것입니다. Static으로 변경하세요
[Unity] [Collab] Collab service is deprecated and has been replaced with PlasticSCM 에러
·
공부/Unity
Unity에서 새로운 프로젝트를 생성하자 이런 에러가 계-속 나온다. 매초마다... 내가 찾은 해결 방안을 써보겠다... 1️⃣ project -> Reimport All 2️⃣ Edit -> Project Settings -> Services -> Collaborate -> OFF
[Git] GitHub Actions에 대하여
·
공부/Git
Application을 개발하며 버그가 일어나면 모두에게 그 사실을 알린다거나 문제가 해결되면 프로젝트의 '버그'란에 있는 문제를 삭제한다거나 하는 등 반복되는 작업이 수없이 많다. 개발자가 일일이 이를 확인하여 처리하는 것도 확실한 방법이지만 절대 효율적인 방법이라 할 수는 없다. 이런 반복 작업을 자동으로 대신 해주는 플랫폼이 많이 있는데 대표적으로 Jenkins, circleci 그리고 지금 알아볼 GitHub Actions등이다. ✅ GitHub Action는 CI/CD방법론을 사용하는 플랫폼이다. 이게 무엇이냐? 앱 개발단계에서 자동화를 도입하여 고객에게 수시로 어떤 행동을 수행하는 것이다. CI/CD의 주요 개념인 Continuous integration(지속적인 통합), Continuous ..
[Git] 효율적인 업무를 위한 Workflow (Centralized Workflow, Feature-Branch Workflow, GitFlow, Forking Workflow)
·
공부/Git
git에 있는 repository를 여러 사용자가 공유하며 자신의 작업물을 올리고 최종 repository에 이를 병합하는 과정은 수도없이 많이 일어난다. 이러한 작업을 하는 방법에는 꽤나 여러가지가 있는데 4가지를 소개해보겠다. 1️⃣ Centralized Workflow 한국어로 번역하면 중앙 집중 작업 흐름 정도가 되겠다. 하나의 repository가 존재하고 모든 작업은 거기서 실행된다. 별도의 branch를 생성하지 않는다. 소규모 작업에 적합한 방식이다. 2️⃣ Feature-Branch Workflow 개발자는 절대! main branch에서 작업하지 않는다. 각자의 branch를 생성하고 각자 작업한다. 오류가 나거나 잘못된 파일이 main branch에 올라가는 일은 없다. master는..
[Git] local repository와 remote repository 그리고 명령어들(fetch, pull, push, fork, pull request)
·
공부/Git
Git은 버전 관리 시스템이다. 컴퓨터에 있는 파일을 인터넷에 올리고 여러 사람과 공유하며 그 파일을 수정하고 큰 프로젝트와 연동시키고 프로젝트에 있는 이슈에 대해 토론하는 등 훌륭하고 아름다운!!! 시스템이다. 평상시 우리는 컴퓨터를 이용해 이런 저런 코드를 짠다. 이때 ✅ 우리의 컴퓨터가 local repository가 된다. ✅ remote repository는 아주 먼 곳에 있는 저장소다. 우리가 local repository에서 짠 코드를 remote repository에 올리는 순간 저 멀리 카이로 피라미드 앞에서도 내 코드를 볼 수 있게 된다. 이렇게 다른 사람들에게 내 파일을 공유하기 위해 우리는 git remote add 명령어를 사용한다. 만약 내가 나 혼자만의 project를 저장하기..
[Git] git clone과 git remote add의 차이점
·
공부/Git
1️⃣ git clone git clone https://github.com/example/repository.git git clone은 원격 저장소에 있는 전체 내용을 로컬(컴퓨터)로 복제한다. 컴퓨터에 물리적인 다운로드가 되기 때문에 저장공간이 필요하다. 위 예시로 보면, example/repository.git의 모든 내용을 복제하여 C:\Users\Intellij\repository라는 폴더가 생기는 것이다. url에 있는 레포지토리가 말 그대로 복제된다. 다른 사람이 만든 코드를 가져와 사용할 수 있다. 2️⃣ git remote add git remote add upstream https://github.com/upstream/repository.git git remote add는 새로운 원격..
[Cloud] Cloud services : SaaS, PaaS, IaaS
·
공부/기타
Cloud services를 이해하기 위해 cloud computing이 무엇인가 이해해보자. ✅ Cloud computing 클라우드 컴퓨팅은 사용자가 클라우드 내에서 워크로드를 통해 리소스를 실행하는 행위다. 사용자는 리소스를 직접 관리하지 않는다. 클라우드의 위치, 소유 권한 등에 따라 public clouds, private clouds, hybrid clouds, multiclouds 가 존재한다. 클라우드 컴퓨팅이 없다면 서울에 있는 서버를 뉴욕에서 실행하기 위해 뉴욕에도 물리적인 서버실을 만들고 데이터를 옮기고 인프라를 구축하는 등의 수고를 거쳐야 한다.하지만 서버를 클라우드에 업로드했다면? 뉴욕, 카이로, 모스크바에서도 물리적인 수고 없이 서버를 그대로 사용할 수 있다. Cloud serv..
아스키 코드표
·
카테고리 없음
컴퓨터가 이해할 수 있도록 숫자를 이용해 문자를 표현하는 방식.
[라즈베리파이] mqtt 에러 Address already in use
·
공부/기타
mosquitto를 실행하려는데 Address already in use 라는 에러가 난다면? ps -ef | grep mosquitto 명령어 입력 후 실행중인 mosquitto의 번호를 알아내고 kill -9 1234 를 통해 실행 중인 프로그램을 종료시킨다. 이때 1234는 ps를 통해 나온 mosquitto의 번호.
[자료구조] AVL트리란?
·
공부/기타
이진탐색트리의 이상적인 모습은 아래와 같다. 이를 균형이진트리라고 한다. 부모 노드의 왼쪽 자식은 부모보다 값이 작고 오른쪽 자식은 부모보다 값이 크다. 이 규칙은 깨지지 않는다. 그러나, 아래와 같은 불균형이진트리도 이진탐색트리의 일종이다. 한쪽으로 치우쳐진 모양의 이진트리를 경사이진트리라고 한다. 경사이진트리는 삽입, 삭제, 탐색 등 모든 경우에서 최악의 시간 복잡도를 갖기 때문에 불균형이진트리를 균형이진트리로 만들어주는 방법이 고안됐는데 그중 하나가 ✅AVL트리이다. AVL트리에서 모든 노드의 양쪽 서브트리의 높이 차는 -1, 0, 1 중 하나다. 이때 BF가 노드 양쪽 서브트리의 높이차를 말한다. 이때 그래프가 위와 같은 모양이 되면 노드 20과 30의 입장에서 BF 값이 2가 된다. 즉, AVL..