IT 용어

레거시 시스템(Legacy System)

레거시 시스템

레거시 시스템(legacy system)은 낡은 기술이나 방법론, 컴퓨터 시스템, 소프트웨어 등을 말한다. 이는 현대까지도 남아 쓰이는 기술을 부르는 말일 수도 있지만, 더 이상 쓰이지 않더라도 현대의 기술에 영향을 주는 경우도 포함한다.

예를 들어 미국 항공우주국의 스페이스 셔틀은 처음 만들어졌을 때의 기술을 쓴 부품을 계속 써왔다. 안정성 등의 조건을 충족시키면서 부품을 새로 개발하는 것은 너무 비용이 많이 들었기 때문에, 대부분의 부품을 1970년대 기술로 계속 만들어 써온 것이다.

많은 소프트웨어 개발자들이 레거시 시스템을 사용하는 것에 잠재적 문제가 있다고 생각한다. 예를 들어 오래된 하드웨어를 위해 설계된 소프트웨어의 경우, 새로운 하드웨어에서 실행되도록 하기 위해서 에뮬레이션이나 하위 호환성을 구현해줘야 할 수 있다.

검사(Verification)

‘소프트웨어가 기획서의 요구 사항에 맞게 올바르게 만들어졌는가?’를 확인하는 것

문서와 파일을 검사하는 명세 기반의 확인 방법이다. 개발 단계의 시작 부분에서 부과된 조건을 만족하는지를 확인해 소프트웨어를 평가하는 과정이다.(CMMI-SW v1.1)

검증(Validation)

‘소프트웨어가 실제 의도한 용도를 충족할 수 있는가?’를 확인하는 것

사용자의 관점에서 확인으로 코드 실행을 수반한다 개발과정 중,또는 끝에 소프트웨어를 평가하는 과정이다.(CMMI-SW v1.1)

API(Application Programming Interface)

API는 프로그램의 기능을 다른 프로그램이 쓸 수 있게 하는 것이 목적입니다.

  • private API는 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행합니다. 따라서 제 3자에게 노출되지 않습니다.
  • public API는 모두에게 공개됩니다. 누구나 제한 없이 API를 사용할 수 있는 게 특징입니다.
  • partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있습니다. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해서 사용됩니다.

SDK(Software Development Kit)

Software Development Kit의 약자로, 프로그래머들을 위해서 제공하는 개발 도구들인데, 예를들면 IOS 응용프로그램을 개발하려면 IOS SDK를 이용해야합니다.

SDK안에는 IDE(통합개발환경)을 포함하는데, 이에는 여러 API, 디버깅, 문서 등 여러 도구가 들어있습니다.

ISA(Industry Standard Architecture)

ISA

초기 PC인 IBM PC의 XT 및 AT에서 사용하던, 8비트 또는 16비트 버스 구조 방식

  • 버스폭 : 16 비트 단위
  • 최대전송속도 : 8 MB/s

  • 버스(Bus)란 2 이상의 관련된 시호선들을 모아놓은 것으로 공통 기능을 수행하는 배선 그룹을 말합니다. 회로도 상에서는 보통 굵은 선으로 표시합니다.

! Bus

  • 컴퓨터 버스 구조는 다음과 같습니다.
    • 시스템 버스는 CPU와 노스브리지(north bridge) 칩셋 간의 데이터 통로 입니다. 주로, 컴퓨터 CPU 보드 즉, 인쇄회로기판(PCB)상의 전기적 신호입니다.
    • I/O 버스는 CPU보드와 사우스브리지 칩셋(South bridge, I/O 컨트롤러)을 통한 외부 입출력 장치 간의 버스입니다.

프레임워크

자주쓰는 기능을 모아둔 것을 프레임워크라고 합니다. 예로 C#의 타이머등을 들 수 있습니다.

도메인, 비즈니스의 의미

도메인 로직, 비즈니스 로직이라는 말은 거의 동의어처럼 쓰입니다.

여기서 도메인이나 비즈니스라는 단어는 우리가 자주 쓰는 맥락과는 조금 다릅니다. 소프트웨어 공학에서 도메인, 비즈니스라는 말은, ‘소프트웨어가 풀고자하는 현실 세상의 문제’를 가르킵니다.

은행 앱이라면, 금융 및 은행 업무가 도메인입니다. 은행 앱이 해결하고자 하는 문제가 금융업무를 스마트폰에서 처리할 수 있게 해주는 것 이기 때문입니다. 틱톡 같은 SNS라면 동영상 촬영, 감상, 댓글 및 공유일 것 입니다.

조금 더 이해를 돕자면, 반대로 공학/기술적인 문제에 속하는 것들은 대게 ‘도메인’과는 구별됩니다. 수많은 은행 사용자 데이터를 어떻게 효율적으로 저장할 것인가? 어떻게 고화질 동영상을 빠르게 로딩할 것인가? 같은 것들입니다.

  • 소프트웨어는 다 현실 문제를 해결하는 것이 아닙니다. 특정 문제 영역에 대한 솔루션을 제공하는 코드 외에도 많은 코드를 써야합니다. 그 코드를 가능하게 만들고, 입력과 출력을 처리하기 위한 로직들입니다. 대표적으로 데이터베이스에 연결하고, 백엔드 서버와 통신하고, 사용자와 인터랙션하는 코드들이 필요합니다. 이런 것들은 도메인 로직과 구분지어 어플리케이션 서비스 로직이라고 부릅니다.

기준을 세워서 도메인 로직과 아닌 것을 나누는 이유는 명확한 관심사의 분리를 위해서입니다.

도메인 로직과 어플리케이션 서비스 로직은 어떤 앱이든 역활이 구분되고, 변경의 이유도 다르기 때문입니다.

도메인 로직과 아닌 것을 잘 나누고 결합도를 낮추면, 개발자가 로직을 이해하기 쉬워집니다. DB나 UI같은 기술적인 구현 사항에 신경 쓰지 않고, 도메인 로직을 이해할 수 있습니다.

비즈니스 정책이 바뀔 때 소프트웨어를 변경하고 기능을 추가하는 것이 편해집니다.

이런 이유로 클린 아키텍처에서는 도메인 로직을 앱의 코어로 두고, 다른 계층에 의존하지 않도록 설게합니다. 다른 계층들은 도메인 로직에게 입력을 전달하고, 변화를 외부로 전달하는 역활을 하도록 명확하게 분리합니다.

CI/CD

CI/CD, CI/CD란 무엇인가

CI/CD는 애플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해서 좀 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있는 것을 말합니다.

CI/CD의 개념만을 두고 보자면 자동화와 직접적으로 관련이 있지는 않습니다. 하지만 그럼에도 자동화라는 키워드는 CI/CD라는 단어에 거의 항상 따라붙습니다.

  • CI/CD는 DevOps 엔지니어의 핵심 업무라고 불리기도 합니다.

MVP sketch (Minimum Viable Produc)

MVP릴리스에 중점을 둔다는 것은 개발자가 잠재적으로 길고(아마도) 불필요한 작업을 피할 수 있음을 의미합니다. 대신 작업 버전을 반복하고 피드백에 응답하여 제품 요구 사항에 대한 가정에 도전하고 검증합니다.

기타 용어

.po 확장자

.po확장자란, 소프트웨어 개발에 사용되는 오브젝트 파일. 텍스트 기반 파일은 GNU gettext에, 자바 프로그램 또는 특성 파일로 다른 프로그램에서 참조 할 수 있습니다. 텍스트 편집기를 사용하여 열 수있는 사람이 읽을 수있는 형식으로 저장.