📌 DevOps :: Development Operations 소프트웨어 개발과 운영을 통합하여 효율성, 협력, 속도, 안정성을 개선하는 개발 및 운영 방법론 개발과 운영간의 협업을 강화하여 릴리즈 주기를 단축하고 문제를 신속히 해결할 수 있도록 도움 🛠️ DevOps의 주요개념 협업과 커뮤니케이션 : 개발자, 운영자, 보안 전문가 등 각 팀의 구성원이 긴밀하게 협력하여 소프트웨어 개발과 배포를 수행 자동화 : 소프트웨어 개발과 배포 과정을 자동화하면 인간의 실수를 줄이고, 일관성과 안정성을 보장할 수 있음 모니터링과 로깅 : 애플리케이션의 상태와 성능을 지속적으로 모니터링하고, 로그를 수집하여 문제를 신속하게 파악하고 대처할 수 있음 🛠️ DevOps의 장점 속도 작업속도가 빨라지므로 고객을 위해 더 ..
🛠️ 모놀리틱(Monolithic) 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이며, 모듈별로 개발을 하고 개발이 완료된 하나의 결과물로 패키징하여 배포되는 형태 장점 개발 초기에는 단순한 아키텍처 구조와 개발이 용이함 단점 서비스 규모가 커짐에 따라 전체 시스템 구조 파악 및 유지보수가 어려워짐 부분 장애가 전체 서비스의 장애로 확대될 수 있음 배포 시간이 오래 걸림 한 Framework와 언어에 종속적 부분적인 Scale-out(여러 서버로 나누어서 일을 처리 방식)이 어려움 🛠️ MSA(Micro Service Architecture) 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프레임워크 여러 개의 서비스를 조합하여 애플리케이션을 구현하는 방식으로 서비..
🎱 개요 프로그래밍 패러다임(Programming Paradigm) 프로그래머에게 프로그래밍의 관점을 갖게하고, 코드를 어떻게 작성할지 결정하는 역할 명령형 프로그래밍 : 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 것인지를 설명하는 방식 절차지향 프로그래밍 : 수행되어야 할 순차적인 처리 과정을 포함하는 방식(C, C++) 객체지향 프로그래밍 : 객체들의 집합으로 프로그램의 상호작용을 표현하는 방식(Java) 선언형 프로그래밍 : 어떻게(How)할 것인지를 나타내기보다 무엇(What)을 할 것인지를 설명하는 방식 함수형 프로그래밍 : 순수 함수를 조합하고 소프트웨어를 만드는 방식(클로저) 🎱 함수형 프로그래밍 📌 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로, 작은 문제를..
객체 지향 프로그래밍 📌 컴퓨터 프로그래밍의 패러다임 중 하나로 모든 것이 객체로 이루어져 있다는 원리를 기반으로 함. 즉, 프로그래밍에서 필요한 데이터를 모두 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들이 서로 맞물려 기능함. 🎱 특징 1️⃣ 추상화(Abstraction) 객체들이 공통적으로 필요로 하는 속성이나 동작을 하나로 추출해내는 작업 불필요한 정보는 숨기고, 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것 2️⃣ 캡슐화(Encapsulation) 정보 은닉화를 통해 높은 응집도, 낮은 결합도를 유지할 수 있도록 설계하는 것 → 한 곳에서 변화가 일어나도 다른 곳에 미치는 사이드이펙트를 최소화시키는 것을 의미 외부에서 접근할 필요가 없는 것들은 접근 지정자 private을..
폭포수 방법론(Waterfall 방법론) : 각 작업이 폭포처럼 위에서 아래로 떨어지는 단계별 개발 방법론 💦 프로세스 요구사항 정의(설계) : 고객의 문제를 정의하고 요구사항을 문서화하여 정리 디자인 : 정리한 요구사항을 충족할 수 있는 제품을 설계하는 단계 개발 : 설계한 내용에 따라 본격적으로 제품을 구현하고 만드는 단계 테스트 : 만들어진 제품의 기능이 제대로 작동하는지 테스트하는 단계 (배포 전, 문제가 될만한 버그 및 오류 수정) 배포 : 최종적으로 결과물이 출시가 되고, 사용자에게 소프트웨어가 배포되는 단계 💦 장단점 ☑️ 장점 단계별로 업무를 분담하기 때문에 맡은 바가 명확함 계획 단계의 문서화로 단계마다 소요되는 시간이나 현재 상황을 추적하고 병목을 파악하기도 쉬움 ☑️ 단점 속도가 느리..
📌 TDD (Test Driven Development) :: 테스트 주도 개발 → 반복 테스트를 이용한 소프트웨어 방법론 - 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현 - 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반을 둔 단순한 설계를 중요시함. 💡 eXtream Programming(XP)란? : 미래에 대한 예측을 최대한 하지 않고, 지속적으로 프로토타입을 완성하는 애자일 기방법론 중 하나 : 추가 요구사항이 생기더라도 실시간으로 반영할 수 있음 💡 단위 테스트(unit Test)란? : 말 그대로 한 단위(일반적으로 class)만을 테스트..