티스토리 뷰
part4. 데이터베이스 이야기
관계형 데이터베이스(RDB)
테이블은 데이터를 직관적이고 간단하게 표현한다. 데이터의 구성은 키와 값으로 되어있고, 이를 통해 데이터의 종속성을 관계로 표현하는 것이 관계형 데이터베이스의 특징이다.
SQL = 데이터베이스의 정보 요청 방식
관계형 데이터베이스 시스템에서 자료를 처리하고, 데이터 관리를 위해 설계된 특수 목적의 프로그래밍 언어이다.
쿼리 = 사용자의 입맛에 맞게 데이터를 요리하는 방법
- '질문을 하다'라는 뜻, 질문은 답을 달라고 하는 일종의 요청
- 쿼리는 데이터베이스에서 질문에 대한 답을 서버에 요청하는 방식
데이터 정의어 DDL
- 데이터 생성, 수정, 삭제 등 데이터 전체 골격을 결정해서 모양을 갖춘다.
- 데이터베이스를 정의한다는 것은 데이터베이스 설계를 한다는 것과 같다.
- CREATE : 테이블을 생성
- ALTER : 테이블이 잘못 생성되거나 수정한 경우 이 명령어를 통해 변경한다.
- DROP : 테이블을 삭제하는 명령어
- TRUNCATE : 테이블을 초기화시키는 역할
데이터 조작어 DML
- 데이터베이스의 데이터를 조회하고, 입력하고, 수정하고, 삭제합니다.
- SELECT : 원하는 데이터를 추출하는 명령어, 데이터베이스에게 필요한 정보를 조회하는 명령어
- INSERT : 새로운 데이터를 추가하는 명령어, 데이터베이스에 데이터를 입력하는 역할
- UPDATE : 데이터를 수정하는 명령어, 이미 존재하는 데이터를 수정하는 역할
- DELETE : 데이터를 삭제하는 명령어
AS-IS : 개선되기 이전의 상태, 현재 있는 그대로, 현재의 업무 프로세스에 대한 분석
TO-BE : 개선된 후의 상태, 미래의 의미, 미래에 개선될 프로세스에 대한 분석
AI : 인공지능은 인간 지능을 모방하여 작업을 수행하고 수집한 정보를 기반으로 반복적으로 개선할 수 있는 시스템 또는 기계를 의미
오픈소스는 소프트웨어를 공개적으로 접근할 수 있으며 누구나 자유롭게 확인하고, 수정하여 배포할 수 있는 코드를 말함.
MySQL은 오라클이라는 서비스를 기대할 수 있으며, MariaDB는 몬티 재단이 이끄는 최고 개발자 사단의 능력으로 성능 좋은 데이터베이스를 사용할 수 있다.
통합개발환경 IDE
코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어. 편리하게 소프트웨어를 개발할 수 있는 환경이 구축됨.
관계형 데이터베이스의 등장으로 트랜잭션을 통한 안정적인 데이터 관리를 가능하게 됨.
하지만 데이터 처리 비용 문제 발생함. 데이터베이스 관리하는 비용 문제가 이슈가 됨.
특히, 빅데이터를 기존 관계형 데이터베이스 관리 시스템에서 처리하게 되면 '다운타임' 문제가 발생함.
다운타임
-빅데이터를 RDB의 형식에 맞게 데이터를 입력하면 긴 시간 동안 데이터베이스 시스템을 이용할 수 없는 다운타임이 발생함. 이러한 일시적인 서비스 중단을 최소화하기 위해서 NoSQL 등장함.
NoSQL 비관계형 데이터베이스
- RDBMS의 독점적인 지위를 반발하는 정신이 담긴 이름
- 일관성과 확장성 요소를 적당히 조절함. 일관성을 어느 정도 포기하는 대신 확장성으로 성능을 확장시킴.
- 분산 저장이 수월해짐. 여러 대의 저비용 서버를 수평적으로 확장해 성능을 향상시켰음.
part5. 코딩 이야기
프레임워크의 사전적 의미
- 소프트웨어 애플리케이션이나 솔루션 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경이다.
- 복잡한 문제를 해결하거나 서술하는 데 사용하는 기본 개념 구조이다.
- 특정한 문제에 사용되는 사고체계, 어떤 일에 대한 판단이나 결정을 위한 틀이다.
- 구조를 결정할 뿐만 아니라 그 위에 개발된 개발자의 코드를 제어하며 구체적이고 확장 가능한 기반 코드를 가지고 있다.
GoF 디자인 패턴
- 소프트웨어 공학에서 가장 많이 사용되는 디자인 패턴
디자인 패턴
- 프로그래밍할 때 문제를 해결하고자 코드의 구조들을 일정한 형태로 만들어 재이용하기 편리하도록 만들어 놓은 일정한 형태
프레임워크의 종류
닷넷 : 지원범위가 방대한 범용적인 프레임워크
루비 온 레이즈 : 루비라는 언어로 웹 어플리케이션을 만들 수 있도록 도와주는 프레임워크
스프링 시큐리티 : 보안이나 프로그램의 기록을 살펴볼 수 있는 로깅 프로그램
리모트, UI, 캐싱 등 세부 분류 프레임워크.. 종류가 다양함.
닷넷 프레임워크
- 마이크로소프트 사에서 제공하는 윈도우 프로그램 개발 및 실행 환경
- 공용 언어 런타임 위에서 작동하므로 플랫폼에 독립적
- 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하여 코딩의 효율성을 증대시켰다는 장점
라이브러리
- 개발에서의 라이브러리는 누군가의 지식을 함축해 놓은 코딩 결과물.
- 소프트웨어 개발하는 데 있어 공통으로 사용할 수 있는 기능들을 모듈화한 것.
- 스스로 동작하는 완전한 프로그램이 아닌 특정 기능만을 수행하도록 개발된 코드.
- 개발자가 사용법에 따라 프로그램에 더해 필요한 기능을 재생산하는 개념.
라이브러리의 종류
1. 표준 라이브러리
- 프로그래밍 언어와 함께 제작사에서 제공하는 정식 라이브러리.
- 프로그래밍 언어의 여러 구현체에서 통용될 수 있도록 만들어진 라이브러리.
- 표준 라이브러리를 이용하면 별도의 파일 설치 없이 다양한 기능을 이용할 수 있다.
2. 외부 라이브러리
- 외부 개발자들이 만들어 배포한다.
- 별도의 파일을 설치해야 사용할 수 있으며 누구나 개발하여 공유할 수 있다.
- 인터넷을 통하여 사용 가능
라이브러리와 프레임워크의 차이
- '제어 흐름'의 권한 차이
- 라이브러리 : 애플리케이션의 흐름을 사용자가 직접 제어
- 프레임워크 : 전체적인 흐름을 프레임워크가 쥐고 있다.
클라이언트는 사용자가 웹 브라우저를 통해 서버에 데이터를 요청한다.
이 때, 서버가 응답하는 형식을 동기화 방식과 비동기화 방식 2가지이다.
동기화
- 요청을 보내고 응답을 받은 후 다음 동작을 시작한다.
- 프로세스 절차가 중요한 곳은 동기화 방식 선호(관리자 페이지, 금융)
- 한 번에 하나씩 처리한다.
- 순차적으로 처리하기에 비동기 방식에 비해 느리다.
- 디버깅이 쉽다.
- 정확한 순서가 필요한 시스템에서 사용.
비동기화
- 요청을 보내고 결과를 기다리지 않고 다음 단계를 실행한다.
- 기다리지 않기 때문에 다양한 작업이 동시에 일어난다.
- 응답을 처리하면 콜백 함수로 이를 전달한다.
- SNS나 포털 사이트처럼 기능이 많고 사용자가 많은 사이트에서 유리하다.
- 여러 가지 로직을 동시에 처리한다.
- 매우 빠르게 결과가 도출된다.
- 결과 값을 콜백 함수로 받아야 한다.
- 여러 개의 이벤트를 동시에 처리하여 결과 값을 반환하는 방식.
- 유동적으로 한 번에 모든 것을 처리.
콜백 함수
- 나중에 호출되는 함수
- 다른 함수가 실행을 끝낸 후 실행하는 함수
객체 지향 프로그래밍
- 독립된 단위인 '객체'라는 기본 단위로 나누어 메시지를 주고받고 데이터를 처리하며 상호작용하는 방식
- 유연하고 변경이 쉬워서 주로 대규모 소프트웨어 개발에 사용
- 유지보수와 개발이 편리하며 직관적으로 코드를 분석할 수 있다.
특징 1. 객체
- 객체는 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으며 다른 것과 식별 가능한 것
- 클래스는 객체를 만들기 위한 확장 가능한 코드 템플릿
- 구현 가능한 초기 값을 제공하는 역할
특징 2. 캡슐화
- 중요한 데이터를 보존하고 보호
- 내부의 정보를 최소한으로 외부에 노출
- 내부에서 정의한 필드와 자료구조에 대한 접근을 차단한다는 뜻이고, 이를 메소드를 접근해서 사용하는 방식.
특징 3. 다형성
- 서로 다른 클래스의 객체가 같은 값을 받은 후 각자의 방식으로 동작하는 능력
- 하나의 객체가 여러 가지 타입을 가질 수 있는 것
특징 4. 상속
- 적은 양의 코드로 새로운 클래스를 작성할 수 있도록 부모 클래스의 변수나 메소드를 자식 클래스가 물려받아 사용하는 방식
- 코드의 추가와 변경이 쉽고, 기존 클래스를 재사용하여 새로운 클래스를 만들기 때문에 재사용성을 높이고 코드의 중복을 제거
특징 5. 추상화
- 특정한 개별 사물과 관련되지 않은 공통된 속성이나 관계 등을 뽑아내는 것
- 중요한 특징을 추려낸 후에 이를 간단하게 표현한다.
- 여러 가지 요소를 하나로 통합하는 방향성을 가지고 있다.
- 컴퓨터 관점에서 추상화란, 데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의해 나가는 과정이면서 동시에 각 개별 개체의 구현에 대한 상세함은 감추는 것.
클래스 = 객체를 정의하는 틀, 설계도
API는 추상적인 개념이고, 라이브러리는 API를 이용해 개발된 구현체
API는 무언가 실제로 만들어져 있는 형상이라기보다는 서비스라고 할 수 있다.
API 역할
1. 데이터베이스에 접근할 수 있게 도와주는 역할, 데이터베이스 서버를 익숙하게 오가며 보안을 철저하게 지켜준다.
2. 통신을 담당한다.
3. 표준화를 담당한다.
API 정책
1. 프라이빗 API
- 기업 내부에서만 사용할 수 있도록 만드는 형식, 외부에서 접근할 수 없도록 보안 처리, 예) 기업 내부 시스템인 인트라넷
2. 파트너 API
- 기업이 데이터 공유를 동의한 특정 비즈니스 파트너에게 제공하는 방식
3. 퍼블릭 API
- 모두에게 제공하는 API, 예) 정부가 제공하는 공공 API
- 공공정보에 많이 사용
애자일 Agile
- 상황에 맞게 반복하며 목표를 달성하는 방식
- 실리콘밸리에 구글, 페이스북 같은 회사들이 발전시켜온 조직 문화
- 변화에 즉각적으로 반응하는 개발 방식
깃 git
- 파일 변경과 소스 관리를 도와주는 형상 관리 도구
중앙 집중 버전 관리 방식
- 저장소를 한 곳에 두고 필요할 때마다 파일을 다운로드하여 작업하는 방식
- 중앙 서버에 업로드하고 의존하는 방식
- 관리자 한 사람이 모든 권한을 제어할 수 있다는 장점
분산 버전 관리 방식
- 중앙 서버에 파일이 존재하지만 다른 원격 장치에서도 동기화된 파일을 갖고 있다. 파일을 가지고 있는 장치가 여러 대로 분산되어 있는 안전한 구조.
- 장점 : 중앙 서버에 문제가 있어도 클라이언트 PC를 통해 원상 복구가 가능하다. 개발자 PC에서 독립적인 저장소와 개인 이력을 관리할 수 있기 때문에 개발 범위를 나눠 병렬로 개발할 수 있고 프로젝트를 개인 환경에서 자유롭게 테스트할 수 있다.
데브옵스 DevOps
- 개발과 운영의 합성어
- 어플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키고자 하는 개발 방법론
- 개발과 운영의 경계를 허물고 하나의 팀으로서 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 뜻함.
출처) 고코더. (2022). 오늘부터 IT를 시작합니다. 한빛미디어
'Reading' 카테고리의 다른 글
오늘부터 IT를 시작합니다 2 (0) | 2023.03.01 |
---|---|
오늘부터 IT를 시작합니다 1 (0) | 2023.02.28 |