옐그's 코딩라이프

[TOPCIT][01] XIV. 소프트웨어 개발 동향 (에센스 정리 요약) 본문

TOPCIT

[TOPCIT][01] XIV. 소프트웨어 개발 동향 (에센스 정리 요약)

옐그멍이 2023. 3. 27. 12:00

학습 목표

1. 소프트웨어 개발도구와 프로그래밍 언어의 기술 동향에 대하여 설명할 수 있다.

2. 개발프레임워크와 소프트웨어아키텍처의 기술 동향에 대하여 설명할 수 있다.

 

 

핵심 키워드

- 소프트웨어 개발도구

- 프로그래밍언어

- 개발프레임워크

- 소프트웨어아키텍처

 

01 소프트웨어 개발도구와 프로그래밍 언어의 기술 동향

소프트웨어 개발도구의 기술 동향

1. 클라우드 기반의 통합개발환경 부각 

- 통합개발환경이란? 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램 개발환경에서 지원하는 소프트웨어

- 최근 어디에서나 개발이 가능하며, 통합개발 프로그램 설치가 필요 없는 클라우드 기반으로 발전하고 있음

- Codenvy, 구름IDE, Cloud9 등 클라우드 기반의 IDE가 있음

 

2. 소프트웨어 개발도구와 ALM(Application Lifecycle Management) 통합

- 기존엔 개발을 지원하는 성능/요구사항/이슈 관리 도구 등이 특정 목적과 특정 단계의 관리가 주목적이었던 도구

- 클라우드 등장에 따른 인프라의 복잡성과 더 빠르고 신속한 IT 서비스를 요구하는 시장 환경으로 개발/테스트/운영을 포괄하는 도구로 진화함

 

프로그래밍 언어 기술 동향

1. 자바스크립트의 확장버전 타입스크립트

자바스크립트

- 세계에서 가장 인기 있고 강력한 프로그래밍 언어 중 하나

- 페이지에 일부 효과를 추가하고 게임, 애니메이션, 드롭 다운 메뉴를 만들고 웹 인터페이스를 효과적으로 제어하여 웹 페이지를 대화식으로 만드는 데 자주 사용됨

 

타입스크립트

- 자바스크립트의 확장버전으로 자바스크립트의 기능을 포함하고 있음

- 컴파일 시점에 타입체크가 일어나는 '정적타입' 언어임

- 모든 브라우저 및 환경에 쉽게 컴파일 되어 유용함

- 모든 것이 클래스 또는 구성요소이기 때문에 코드 작성 및 학습이 쉬움

- 대형 응용프로그램에도 적용가능

 

2. 자바(Java)9 버전

- 모듈화 강화로 소형 디바이스 등에도 최적화가 가능하며 자바의 확장성과 성능이 향상됨

- AOT(Ahead Of Time) 컴파일 기능으로 가상시스템에서 실행하기 전에 네이티브 코드로 컴파일 되는 기능으로 응용프로그램의 시작 시간을 개선함

- 컴파일 전에 프로그램에 대한 피드백을 받을 수 있는 REPL(Real Eval Print Loop) 지원

 

3. 코틀린(Kotlin)

- 안드로이드 스튜디오를 제작한 JetBrain이 개발한 함수형 언어

- 2017년 구글에서 안드로이드 공식 프로그래밍 언어로 채택함

- 간단하며 성능이 뛰어나 안드로이드 기반의 개발을 위한 최적의 환경을 제공함

- 기존 안드로이드 API와 호환되면서 간결한 문법으로 앱을 개발할 수 있음

- 자바와 매우 유사하기 때문에 자바 개발자는 빠르고 쉽게 활용

 

4. 스위프트(Swift)

- 애플에서 iOS, macOS, watchOS, tvOS 등 애플 제품용 애플리케이션을 개발하기 위한 프로그래밍 언어로 자사의 플랫폼 위에서 좀 더 쉽고 빠르게 개발이 가능하도록 지원하기 위해 만들어짐

- 코딩과정이 단순해 개발이 용이하면서도 성능은 뛰어남

- 대화식이며 빠르게 이해가능

 

02 개발프레임워크와 소프트웨어 아키텍처 기술 동향

개발프레임워크의 기술 동향

1. 앵귤러4(Angular4)

- 구글에서 만들어 유지관리하는 자바스크립트 프레임워크

- 단일 페이지 응용프로그램에 사용되며 HTML DOM을 확장하여 사용자의 처리 요청에 신속하게 응답함

- SPA(Single Page Application) 프레임워크로 웹페이지 실행 시 해당 페이지의 주소를 바꾸지 않으면서도 동적으로 View 페이지를 불러와 사용하는 것을 말함

- 작은 응용 프로그램을 만들 때 도움이 되는 타입스크립트 2.1로 작성됨

- 단순한 정적 웹페이지가 아닌 프로그램 로직 및 백엔드 바인딩 기능 지원

 

2. 리액트(React.js)

- 페이스북에서 페이스북 웹개발에 사용하기 위해 만든 자바스크립트 라이브러리

- Backbone.js와 앵귤러와 같이 웹의 개발에 필요한 웹프론트 프레임워크의 기능을 제공함

- 웹페이지가 자주 변화하는 대규모 애플리케이션 구축에 유용함

- JSX(JavaScript XML)라는 기존의 XML를 허용하는 자바스크립트 확장 문법으로 자바스크립트 내 마크업 코드 작성을 지원함

- UI를 구성하는 개별적인 뷰단위로 Component 지원

- Virtual DOM을 통한 데이터 처리

 

3. 익스프레스(Express.js)

- 웹과 모바일 애플리케이션 개발에 필요한 최적의 기능을 제공하고 작고 유연한 Node.js의 웹 애플리케이션 프레임워크

- Node.js를 위한 빠른 웹개발이 가능하도록 지원함

- 구글의 크롬V8 자바스크립트 엔진을 활용한 이벤트기반의 백엔드 서버 개발언어

- 템플릿에 전달된 인자에 따라 HTML 페이지 동적 View가 가능하도록 처리

- 자바스클비트 코드로 작성된 미들웨어 구조 지원을 통해 필요한 기능을 결합하여 사용

 

소프트웨어아키텍처 기술 동향

1. 마이크로서비스 아키텍처(Microservice Architecture)

- 하나의 큰 애플리케이션을 여러 개의 작은 서비스 단위로 나누어 개별적인 데이터 저장소를 보유하고 독립된 실행환경을 구축함으로써 서비스 단위로 독립적인 개발, 빌드, 테스트, 배포, 모니터링, 라우팅, 확장이 가능한 아키텍처

- 빠른 비즈니스 변화에 대응이 가능하며 단시간에 배포 및 손쉽게 개선 및 변경이 가능함

- 서비스를 작은 크기로 나누고 독립적으로 개발함으로써 높은 개발생산성 제공

- 전체 배포가 아닌 서비스단위 배포를 통한 배포의 유연성

- 서비스 단위로 독립 확장을 통해 정교한 시스템 확장 가능

 

2. 도커(Docker)

- 가상머신처럼 독립적이고 격리된 공간을 제공하는 리눅스 컨테이너(Linux Container, LXC) 기술을 자동화하여 쉽게 사용할 수 있게 지원하는 오픈소스 플랫폼

- 도커라는 기업이 최초로 기술지원을 시작함

- 구글의 쿠버네티스라는 오픈소스 프로젝트로 기업용 도커가 있음

- 서버 가상화를 지원하는 하이퍼바이저 기반의 가상화보다 훨씬 가볍게 가상화 환경을 구성할 수 있음

- 개발 언어나 툴에 상관없이 애플리케이션 개발 가능

- 컨테이너를 활용해 개발된 애플리케이션의 패키지, 배포 및 관리가 용이함

- 이미지를 사용해 컨테이너 실행에 필요한 파일과 설정값 등을 포함

- 인프라의 요구사항과 관련없이 간단하고 빠른 개발 구성

- 다중 클라우드 플랫폼 지원

728x90