본문 바로가기

전체보기101

DevOps 데브옵스는 개발(Development)과 운영(Operation)의 합성어로 소프트웨어 개발자와 IT 운영 팀 간의 협업과 통합을 촉진하는 문화, 철학 그리고 일련의 실천 방법을 말한다. 소프트웨어 제품과 서비스를 더 빠르고 안정적으로 제공하여 비즈니스 가치를 극대화하는 것이 목표다.  ㅇ 배경과 필요성개발과 운영 간의 격차전통적으로 개발 팀은 새로운 기능과 변경 사항을 빠르게 구현하는데 집중하고 운영 팀은 시스템의 안정성과 가용성을 유지하는데 집중했다. 이로 인해 두 팀의 목표 충돌이 발생 협업이 어려워졋다.시장 경쟁 심화혁신과 빠른 시장 변화로 인해 기업은 더 짧은 주기로 제품과 서비스를 제공해야하는 압박을 받는다.애자일 방법론의 확장애자일 방법론이 인기를 얻으면서 개발 속도는 빨라졌지만, 운영 프로.. 2024. 10. 23.
OOP 객체 지향 프로그래밍(Object-Oriented Programming) 객체 지향 프로그래밍(OOP)은 프로그램을 객체라는 단위로 구성하여 소프트웨어를 개발하는 프로그래밍 패러다임입니다. 객체는 데이터(속성)와 이를 조작하는 함수(메서드)를 하나로 묶은 독립적인 단위로, 현실 세계의 개념을 프로그래밍에 적용합니다. ㅇ 핵심 개념추상화(Abstraction)복잡한 시스템에서 필요한 핵심적인 부분만을 모델링하여 표현하는 것불필요한 세부사항을 감추고 중요한 정보에 집중하여 코드의 복잡성을 줄인다.캡슐화(Encapsulation)데이터와 메서드를 하나로 묶고 외부로부터 직접적인 접근을 제한하는 것데이터의 무결성을 보호하고 객체 간 의존성을 낮춘다.private으로 변수에 직접접근을 막고 메서드를 통해서 조작한다.상속(Inheritance)기존 클래스의 속성과 메서드를 새로운 클래스.. 2024. 10. 23.
애자일(Agile) 방법론 애자일은 기민함, 날렵함이라는 뜻으로 좋은 것을 빠르게 취하고 낭비 없게 만드는 다양한 방법론을 통칭해 일컫는 말이다.앞을 예측하며 개발하지 않고, 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발해나가는 프로세스 모델 방식이다. ㅇ 진행과정계획 > 설계(디자인) > 개발(발전) > 테스트 > 검토(피드백)의 순서로 반복적으로 진행된다. 진행 후 분석, 시험, 피드백을 통해 개선해나가는 진행 모델이다.  계획 및 분석고객가 사용자가 원하는 바를 파악하여 타당성을 조사하고 SW 기능과 제약조건을 정의하는 명세서 작성, 대상이 되는 문제 영역과 사용자가 원하는 task를 이해하는 단계설계(디자인)기획의도와 맞는 설계 및 디자인 추가 및 수정하는 단.. 2024. 10. 23.
TDD(Test-Driven Development) 테스트 주도 개발은 소프트웨어 개발 방법론 중 하나로, 실제 코드를 작성하기 전에 테스트 코드를 먼저 작성하는 방식이다. 이 접근법은 작은 단위의 테스트를 작성하고, 그 테스트를 통과하기 위한 최소한의 코드를 구현하는 과정을 반복한다.이를 통해 요구사항을 명확히 하고, 코드 품질을 향상시키며, 버그를 조기에 발견할 수 있다. ㅇ 기본 사이클 TDD는 다음과 같은 세 가지 단계를 반복하는 짧은 개발 사이클을 따른다.Red 단계실패하는 테스트를 작성한다. 아직 기능이 구현되지 않았기에 테스트는 실패해야 한다.Green 단계테스트 통과를 위한 최소한의 코드를 작성한다. 완벽한 구현보다 테스트 통과에 초점을 맞춘다.Refactor 단계코드와 테스트를 리팩토링하여 품질을 개선한다. 중복 제거, 가독성 높이기 등 .. 2024. 10. 23.
클린코드 & 시큐어 코드 & 리팩토링 ㅇ 클린코드코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 한다.가독성이 높은 코드** 가독성을 높이려면네이밍이 잘 되어야 한다.오류가 없어야 한다.중복이 없어야 한다.의존성을 최대한 줄여야 한다.클래스 혹은 메서드가 하나의 일만 처리한다.클린코드를 만들기 위한 규칙네이밍변수, 클래스, 메서드의 의도가 분명한 이름을 사용한다.잘못된 정보를 전달할 수 있는 이름은 사용하지 않는다.범용적으로 사용되는 단어X연속된 숫자나 불용어를 덧붙이는 방식은 피한다.주석 달기코드를 읽는 사람이 코드를 작성한 사람만큼 잘 이해할 수 있도록 도와야한다.반드시 달아야 할 이유가 있는 경우에만 작성한다.빠르게 유추할 수 있는 코드에는 사용하지 않는다.꾸미기보기좋게 배치하고 꾸민다. 보기 좋은 코드가 읽.. 2024. 10. 23.
CS OS 세마포어와 뮤텍스 세마포어와 뮤텍스는 동기화 도구로 여러 프로세스나 스레드가 동시에 공유 자원에 접근할 때 발생할 수 있는 문제를 방지하기 위해 사용된다. 동시성 제어에서 자원 접근을 조절하는데 사용된다. ㅇ 세마포어정의세마포어는 특정 자원에 접근할 수 있는 스레드의 수를 제어하기 위한 동기화 기법이다. 정수 값으로 표현되며 이 값은 공유 자원의 사용 가능 개수를 나타낸다. 동작 원리세마포어는 주로 두 가지 연산인 P() (wait) 와 V() (signal)를 통해 동작한다.P()세마포어 값을 감소시켜 자원을 요청한다. 세마포어 값이 0 이하면 스레드는 대기상태가 된다.V()세마포어 값을 증가시켜 자원을 반환하고 대기중인 스레드가 있으면 깨운다.세마포어는 카운팅 세마포어와 이진 세마포어로 나눌 수 있다.카운팅 세마포어세.. 2024. 10. 22.
CS OS Dead Lock(교착상태) 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태무한히 다음 자원을 기다리게 되는 상태를 말한다.각각 자원을 점유한 상태에서 다른 프로세스가 점유한 자원을 기다리며 무한히 대기하는 상황이다.  ㅇ 데드락 발생 조건데드락이 발생하려면 다음 네 가지의 조건을 동시에 만족해야한다. Coffman 조건이라고도 한다.상호 배제자원은 한 번에 하나의 프로세스만 사용할 수 있어야한다. 다른 프로세스가 그 자원을 사용할 수 없도록 배타적으로 점유하는 상황을 말한다.점유와 대기자원을 이미 점유한 프로세스가 다른 자원을 추가로 요청하면서 현재 점유한 자원을 놓지 않고 계속 보유한 채로 대기하는 상황이다.비선점자원을 강제로 뺏을 수 없다. 프로세스가 자원을 스스로 해제할 때까지 다른 .. 2024. 10. 22.
CS OS IPC(Inter Process Communication) IPC는 서로 다른 프로세스들이 데이터를 주고 받으며 상호작용할 수 있게 하는 메커니즘을 의미한다. 운영 체제에서 각 프로세스는 독립적인 메모리 공간을 가지므로, 프로세스 간 데이터를 직접 공유할 수 없기 때문에 IPC를 사용해 데이터를 교환하고 협력 작업을 수행한다. 메세지 전달 방식공유메모리 방식 ㅇ 필요성프로세스 간 데이터 교환여러 프로세스가 같은 데이터를 공유하고, 이를 통해 작업을 수행해야 할 때 필요하다.동기화프로세스 간의 작업 순서를 조정하고 자원 접근을 제어하기 위해 IPC가 사용된다.자원 공유파일, 메모리, 장치 같은 시스템 자원을 여러 프로세스가 효율적으로 사용할 수 있도록 한다. ㅇ IPC 기법익명 PIPE파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 데이터를 쓰기만 하고,.. 2024. 10. 22.
CS OS PCB & Context Switching Process ManagementCPU가 프로세스가 여러개 일 때, CPU 스케줄링을 통해 관리하는 것을 말한다.이 때 CPU가 프로세스를 관리하기 위해 각 프로세스가 누군지 알아야 한다.프로세스의 특징을 갖고 있는 것이 Process Metadata이다. Process MetadataProcess ID (프로세스 아이디)Process State (프로세스 상태)Process Priority (프로세스 우선순위)CPU Registers (CPU 레지스터)Owner (소유자)CPU Usage (CPU 사용량)Memory Usage (메모리 사용량)프로세스가 생성되면 메타데이터는 PCB(Process Control Block)이라는 곳에 저장된다.  ㅇ PCB프로세스 메타데이터들을 저장하는 공간, 한 PCB.. 2024. 10. 22.