Tech Interview/Software Engineering

Tech Interview/Software Engineering

[Software Engineering] 목차

순번 유형 01 클린코드 02 리팩토링 03 시큐어 코딩 04 테스트 주도 개발 (TDD) 05 애자일 (Agile) 06 객체 지향 프로그래밍 (OOP) 07 함수형 프로그래밍 08 데브옵스 (DevOps) 09 서드 파티 (3rd party) 10 마이크로 서비스 아키텍처 (MSA)

Tech Interview/Software Engineering

[Software Engineering] 마이크로 서비스 아키텍처

✔️ 마이크로 서비스 아키텍처 마이크로 서비스 아키텍처란? 소프트웨어 개발 기법 중 하나로, 애플리케이션 단위를 목적으로 나눔 MSA가 도입되기 전, Monolithic 아키텍처 방식의 개발에서는 모든 기능을 하나의 어플리케이션에서 비즈니스 로직을 구성해 운영하였음 따라서 개발을 하거나 환경설정에 있어서 간단한 장점이 있어 작은 사이즈의 프로젝트에서는 유리하지만, 시스템이 점점 확장되거나 큰 프로젝트에서는 단점들이 존재 빌드/테스트 시간의 증가로 인한 유지보수의 힘듦 작은 문제가 시스템 전체에 문제를 일으켜 모든 서비스 이용이 불가 서비스마다 이용률이 다르더라도 하나의 서비스를 확장하기 위해 전체 프로젝트를 확장해야 함 MSA는 좀 더 세분화 시킨 아키텍처로, 기능(목적)별로 컴포넌트를 나누고 조합할 수..

Tech Interview/Software Engineering

[Software Engineering] 서드 파티

✔️ 서드 파티 서드 파티란? 프로그래밍을 도와주는 라이브러리를 만드는 외부 생산자 하드웨어 생상자와 소프트웨어 개발자의 관계를 나타낼 때 사용 퍼스트 파티 개발자 : 하드웨어 생산자가 직접 소프트웨어를 개발하는 경우 세컨드 파티 개발자 : 하드웨어 생산자인 기업과 자사간의 관계에 속한 자가 소프트웨어를 개발하는 경우 서드 파티 개발자 : 하드웨어 생산자와 아무 관련없는 제 3자가 소프트웨어를 개발하는 경우 주로 편한 개발을 위해 플러그인이나 라이브러리 혹은 프레임워크를 사용하는데, 이처럼 제 3자로 중간다리 역할로 도움을 주는 것이 서드 파티, 이런 것을 만드는 개발자가 서드 파티 개발자

Tech Interview/Software Engineering

[Software Engineering] 데브옵스

✔️ 데브옵스 데브옵스란? Development와 Operations의 합성어 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목표로 함 결국, 소프트웨어 제품이나 서비스를 알맞은 시기에 출시하기 위해 개발과 운영이 상호 의존적으로 대응해야 한다는 의미 데브옵스의 개념은 애자일 기법과 지속적 통합의 개념과도 관련이 있음

Tech Interview/Software Engineering

[Software Engineering] 함수형 프로그래밍

✔️ 함수형 프로그래밍 함수형 프로그래밍이란? 순수 함수를 조합하여 공유 상태, 변경 가능한 데이터 및 부작용을 피해 소프트웨어를 만드는 프로세스 선언형 프로그래밍으로, 애플리케이션 상태는 순수 함수를 통해 전달되게 됨 이를 통해 주어진 값 이외의 외부 변수 및 프로그래밍 실행에 영향을 끼칠 수 있었던 부수효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이도록 함 애플리케이션의 상태가 일반적으로 공유되고 객체의 메소드와 함께 배치되는 객체 지향 프로그래밍과는 대조 명령형 프로그래밍(절차 지향, 객체 지향)은 상태와 상태를 변경시키는 관점에서 어떻게 할지(How) 설명하지만, 선언형 프로그래밍(함수형 프로그래밍)은 알고리즘을 명시하지 않고 목표만 명시하여 무엇을 할 것인지(What)를 표현 함수형 코드는..

Tech Interview/Software Engineering

[Software Engineering] 객체 지향 프로그래밍

✔️ 객체 지향 프로그래밍 객체 지향 프로그래밍이란? 가능한 모든 물리적, 논리적 요소를 객체로 만드는 것 특정한 개념의 함수와 자료형을 함께 묶어서 관리하기 위해 탄생 객체 내부에 자료형(필드)와 함수(메소드)가 함께 존재하게 됨 객체 지향으로 구현하게 되면, 객체 간의 독립성이 생기고 중복코드의 양이 줄어드는 장점이 있으며 독립성이 확립되면 유지보수에도 도움이 되게 됨 객체 지향의 특징 추상화 : 필요로 하는 속성이나 행동을 추출하는 작업 세부적인 사물들의 공통적인 특징을 파악한 후 하나의 집합으로 만들어내는 것 캡슐화 : 낮은 결합도를 유지할 수 있도록 설계하는 것 한 곳에서 변화가 일어나도 다른 곳에 미치는 영향을 최소화하도록 함 정보 은닉을 활용해 객체 안의 모듈 간의 요소가 밀접한 관련이 있는..

Tech Interview/Software Engineering

[Software Engineering] 애자일

✔️ 애자일 애자일이란? 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식 이를 통해 고객의 만족도를 개선 협력과 피드백을 더 자주하는 것이 핵심 요구 분석 단계에서 한 번에 모든 요구사항을 정확하게 전달하는 폭포수 모델과 달리, 개발 과정에 있어서 시스템 변경사항을 유연하고 기민하게 대응할 수 있는 애자일 모델은 소프트웨어 개발의 불확실성을 처리하는 방식에 있어 폭포수 모델의 한계를 극복할 수 있음 애자일의 진행 방법 개발자와 고객 사이의 지속적인 커뮤니테이션을 통해 변화하는 요구사항을 수용 고객이 결정한 사항을 가장 우선으로 시행하고, 개발자 개인의 가치보다 팀의 목표를 우선으로 함 팀원들과 주기적인 미팅을 통해 프로젝트를 점검 주기적으로 ..

Tech Interview/Software Engineering

[Software Engineering] 테스트 주도 개발

✔️ 테스트 주도 개발 테스트 주도 개발이란? 테스트 케이스를 먼저 작성한 이후에 실제 코드를 개발하는 리팩토링 절차를 거치는 개발 방식 반복적인 테스트와 수정을 통해 고품질의 소프트웨어를 탄생 테스트 주도 개발의 장점 작업와 동시에 테스트를 진행하면서 실시간으로 오류 파악이 가능함 짧은 개발 주기를 통해 고객의 요구사항을 빠르게 수용할 수 있음 자동화 도구를 이용한 단위 테스트 작성이 가능함 (Java의 JUnit, C++의 CppUnit 등) 앱의 동작에 관한 문서를 테스트가 제공해줌 안정성이 필요한 소프트웨어에서 개발 초기 단계부터 확실하게 기반을 다져갈 수 있음 유지보수 비용을 줄일 수 있음 테스트 주도 개발의 단점 기존 개발 프로세스에 테스트 케이스 설계가 추가되므로 초기 생산 비용이 증가함 테..

김깅긍
'Tech Interview/Software Engineering' 카테고리의 글 목록