본문 바로가기

Computer Science

(17)
[Program Execution Process] 런 타임과 컴파일 타임 런 타임과 컴파일 타임프로그래밍에서 소프트웨어 개발은 여러 단계로 나뉘며, 그 중 가장 중요한 두 가지 개념이 컴파일 타임(Compile Time)과 런타임(Runtime)인데, 이 두 개념은 프로그램의 실행과 오류 처리, 성능 최적화에 밀접한 관련이 있음고급 언어로 작성된 프로그램을 소스 코드(Source Code)라고 하며 컴퓨터는 직접 소스 코드를 실행할 수 없기 때문에, 이를 실행 가능하도록 기계 코드(기계어, Machine Code)로 변환해야 함→ 이 변환 과정은 컴파일러(Compiler) 또는 인터프리터(Interpreter)라는 프로그래밍 도구를 통해 수행컴파일러(Compiler) : 전체 소스 코드를 한 번에 번역한 후 실행 파일을 생성인터프리터(Interpreter) : 코드를 한 줄씩..
[Software Development] 워터폴 방법론과 애자일 방법론 워터폴 (Water Fall) 방법론이란?폭포수 방법론이라고도 불리며 이름에서도 알 수 있듯이 각 작업이 폭포처럼 위에서 아래로 떨어지는 단계별 개발 방법론요구사항 정의(설계) → 디자인 → 개발 → 테스트 → 배포의 과정이 순차적으로 진행되며 이전 단계가 그다음 단계로 떨어짐애자일 방법론이 등장하기 전까지는 소프트웨어 개발 뿐 아니라 자동차, 선박 등 산업 현장에서 보편적으로 사용되던 개발 방법론워터폴 방법론 프로세스요구사항 정의프로세스의 가장 첫 단계로 고객의 문제를 정의하고 요구사항을 문서화하여 정리하는 단계어떤 작업이 필요한지, 필요한 리소스는 무엇인지, 우선순위는 무엇인지 등을 계획하는 단계로 요구사항이 명확해야 프로젝트를 시작하고 무사히 완성될 수 있기 때문에 요구사항을 분석하고 문서를 정리하..
[Software Architecture] 도메인 주도 설계(Domain-Driven Design, DDD) 도메인 주도 설계(Domain-Driven Design, DDD)란?에릭 에반스가 제안한 소프트웨어 설계 방법론비즈니스 도메인을 중심으로 소프트웨어를 설계하고 개발하는 방식쉽게 말해 비즈니스의 핵심 개념과 로직을 코드에 잘 녹여내는 것이 DDD의 핵심DDD의 핵심 개념도메인(Domain)이란?소프트웨어가 해결하려는 특정 비즈니스 영역예를 들어 쇼핑몰이라면 상품, 주문, 결제 등이 도메인이 될 수 있음 바운디드 컨텍스트 (Bounded Context) 하나의 도메인은 여러 개의 서브 도메인으로 나뉠 수 있음하지만 각 도메인은 명확한 경계(Context)를 가져야 함예를 들어, 주문(Order)이라는 개념이 배송팀과 고객센터에서 다르게 해석될 수도 있기 때문에 각 도메인의 경계를 명확히 나누는 것이 중요배송..
[Third Party] 서드 파티의 개념 서드파티(Third Party)란?어떤 시스템, 소프트웨어, 계약, 또는 서비스에서 제3자를 의미서드파티는 일반적으로 기본적인 관계에 직접적으로 포함되지 않은 외부 주체를 가리킴단, 분야에 따라 서드파티 용어의 쓰임새가 달라짐분야 별 서드파티의 의미게임 및 디지털 콘텐츠 게임 분야에서 서드파티(Third Party)란 콘솔 게임기 제조사가 제공하는 라이선스를 기반으로, 특정 플랫폼(PS5, XBOX)에서 게임만 제작하는 외부 게임 개발사를 의미Ex) PlayStation에서 판매되는 Ubisoft의 '어쌔신 크리드', EA의 FIFA 시리즈, Capcom의 Street Figther 반대 개념으로는 퍼스트 파티(First Party)가 있는데, 퍼스트 파티는 콘솔 게임기 제조사가 소프트웨어(게임)까지 개..
[Cloud Service] 클라우드 서비스의 개념 클라우드 서비스란?인터넷을 통해 컴퓨팅 자원, 데이터 저장, 소프트웨어, 플랫폼 등의 IT 관련 서비스를 원격으로 제공하는 서비스클라우드 서비스를 이용하면 하드웨어와 소프트웨어를 구입하거나 유지 관리할 필요 없이 컴퓨팅 리소스를 활용 가능 클라우스 서비스의 모델IaaS (Infrastructure as a Service)클라우드를 통해 컴퓨팅, 스토리지, 네트워킹, 가상화와 같은 주문형 인프라 리소스를 조직에 제공 고객이 자체 데이터 센터 인프라를 관리, 유지 관리 또는 업데이트 할 필요는 없지만 운영체제, 미들웨어, 가상 머신, 앱 또는 데이터를 책임 짐인프라(Infrastructure)란?- IT에서 인프라란 컴퓨터 시스템을 운영하기 위한 기반 시설- 쉽게 말해, 컴퓨터가 제대로 작동하도록 돕는 필수..
[Software Engineering] CBD 방법론 CBD(Component Bassed Development) 방법론 소프트웨어를 독립적이고 재사용 가능한 컴포넌트들로 구성하여 개발하는 방식이 컴포넌트들은 일반적으로 특정 기능을 제공하며, 다른 시스템이나 애플리케이션에서 재사용이 가능각 컴포넌트는 독립적이고 잘 정의된 인터페이스를 통해 상호작용핵심 개념컴포넌트(Component) : 독립적으로 개발될 수 있는 모듈, 보통 특정 기능을 수행하는 코드 집합재사용성 : 기존에 개발된 컴포넌트를 다른 프로젝트나 시스템에서 재사용인터페이스 : 컴포넌트 간의 통신을 정의하는 규약으로, 각 컴포넌트는 명확하게 정의된 인터페이스를 통해 다른 컴포넌트와 상호작용모듈화 : 시스템을 작은 단위로 나누어 개발함으로써 복잡성을 줄이고 유지보수를 용이하게 함CBD 방법론의 등..
[Database] 트랜잭션의 개념과 ACID 원칙 트랜잭션(Transaction)의 개념데이터베이스의 논리적인 작업 단위여러 개의 SQL 문들을 하나의 논리적 작업으로 묶어서 실행하며, 이 작업이 모두 성공적으로 수행된 경우에만 변경된 데이터를 영구적으로 저장하고, 그렇지 않은 경우에는 모든 변경을 취소데이터베이스의 일관성과 무결성을 유지하기 위한 중요한 개념 중 하나트랜잭션을 관리하기 위해서는 ACID 원칙이라는 4가지 특징이 매우 중요트랜잭션의 특징 4가지 - ACID 원칙원자성 (Atomicity)All or Nothing 트랜잭션 내에서 수행한 작업들이 모두 성공하거나 모두 실패하는 원칙 트랜잭션 내의 모든 작업은 하나의 단위로 처리되기 때문에 중간에 오류가 발생할 경우 모든 작업이 취소 됨 Ex) 은행 계좌에서 100원을 인출하고 다른 계좌에 ..
[Network] RESTful API vs Socket 통신 차이 통신 방식 RESTful APIHTTP 프로토콜을 기반으로 요청/응답 모델을 따름 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 반환하고 연결이 종료상태 없는(stateless) 방식으로 각 요청은 독립적으로 처리소켓 통신양방향 실시간 통신을 지원하는 지속적인 연결을 통해 데이터를 전송연결이 유지되는 동안 클라이언트와 서버 간에 데이터를 지속적으로 송수신 가능연결 유지 여부 RESTful API기본적으로 연결을 유지하지 않음 (stateless)요청이 끝나면 연결이 종료되고, 새로운 요청을 할 때마다 새로운 연결이 설정소켓 통신연결 유지클라이언트와 서버는 한 번 연결을 맺으면 그 연결을 통해 데이터를 지속적으로 주고 받음응답 방식 RESTful API클라이언트가 요청을 보내면 서버는 그에 대..