2023/01 14

[개요] 디자인패턴(Design Pattern)이란?

소프트웨어 디자인패턴(software design pattern)이란? 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바뀔 수 있는 완성된 디자인은 아니고 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는 데 쓰이는 서술이나 템플릿이다. 개발자가 애플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데 쓰이는 형식화된 가장 좋은 관행이다. 디자인 패턴은 설계자들이 올바른 설계를 빨리 만들 수 있도록 도와준다. 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션 같은 것이다. 「GoF의 디자인패턴」에서는 아래 세 가지로 구분한다. 복잡성, 상세도 및 설계 중인 전체 시스템에..

Chapter 10.01 실행 계획

대이터베이스의 주 목적: 많은 데이터를 안전하게 보관하고 빠르게 조회한다. 이러한 목적을 위해 옵티마이저가 사용자 쿼리가 최적으로 처리되도록 실행 계획을 수립할 수 있어야한다. EXPLAIN 명령으로 옵티마이저가 수립한 실행 계획을 확인할 수 있다. 10.1 통계 정보 MySQL 5.7 버전까지는 테이블과 인덱스에 대한 개괄적인 정보를 가지고 실행 계획을 수립했다. 그런데 이는 테이블 칼럼의 값이 어떻게 분포되는지 정보가 없으모로 실행 계획의 정확도가 떨어지는 경우가 많았다. 그래서 8.0 버전부터는 인덱스되지 않은 칼럼들에 대해서도 데이터 분포도를 수진해서 저장하는 히스토그램(Histogram) 정보가 도입됐다. 10.1.1 테이블 및 인덱스 통계 정보 비용 기반 최적화에서 가장 중요한 것은 통계 정보..

7. 팀 프로젝트 관련 및 인성 질문

팀 프로젝트 프로젝트에 대한 소개 인원, 담당 업무 조는 어떻게 편성이 됐는가? 담당 업무를 맡은 이유 주제는 어떻게 정했는가? 테이블은 몇 개인가? 칠판에 ERD 그려 보기 테이블 조인은 몇 개 까지 해봤는지? 프로젝트에서 예외 처리 예외 처리 클래스 구현 1) enum형태로 MemberErrorCode를 만든다. 2) MemberException: RuntimeException을 상속하는 예외 클래스, MemberErrorCode 하나의 멤버변수만 있다. 3) MemberErrorResponse: String message와 MemberErrorCode로 이뤄짐, Response을 상속한다. Controller 클래스에서 반환형으로 지정해서 프론트한테 HttpStatus와 함께 보내주는 역할이다. 4..

6. JPA(Java Persistence API)

JPA(Java Persistence API) JPA란? Java 진영의 ORM 기술 표준을 말한다. ORM: 직접 SQL구문을 사용하지 않고 객체와 데이터베이스의 스키마를 매핑시킨다. 객체는 객체대로 설계하고 RDBMS는 RDBMS대로 설계한다. ex) Hibernate(JPA를 구현한 오픈소스) https://oranthy.tistory.com/321 JPA 등장 배경 패러다임의 불일치: Java(속성과 기능을 캡슐화해서 사용하는 게 목표) vs RDBMS (데이터 정교화 및 보관) JPA 장단점 장점 쿼리를 작성할 필요 없어서 코드가 줄어든다. 가독성 좋다. 간편한 수정 가능 동일한 쿼리에 대한 캐시 기능을 사용해서 성능이 좋다. 단점 매핑 설계를 잘못하면 성능 저하 JPA를 제대로 사용하려면 알아..

5. Spring

Spring 스프링 프레임워크가 전자정부프레임워크로 자리 잡은 이유는? 전자정부표준프레임워크(eGov)란? 행정부 산하 한국 정보화진흥원에서 만든 웹 기반 애플리케이션 프레임워크로서 정부, 공공기과느 공기업 등의 웹 사이트에 자주 쓰이는 공통 기능을 자바의 Spring Framework와 유명 Java 라이브러리(마이바티스, 등)을 가지고 미리 만들어놓은 컴포넌트와 이를 개발하는 개발, 운영, 관리 환경 등으로 구성된다. 다양한 기술이 난잡하게 사용된던 SI 업계에 표준을 지정해줘서 전체적인 생산성을 증가시키려는 목적이 있다. 장점 정형화되어 있어서 일정 수준 이상의 품질을 기대 가능하다 전자 정부 프레임워크이기 때문에 한국에서 수요가 크다. 확장성: 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이..

4. Java

Java 객체 지향 프로그래밍이란? 실제 세계를 모델링해서 소프트웨어를 개발하는 방법이다. ex) Java, Python, C++, Swift 객체 지향의 특성 4가지: 캡슐화, 추상화, 다형성, 상속 https://brownbears.tistory.com/407 객체 지향을 정의하자면 의존성 관리이다. 객체지향으로 의존성을 관리함으로써 변경 영향을 최소화하고 독립적인 배포가 가능해지며 독립적인 개발이 가능해진다. 따라서 객체 지향에서 가장 중요한 것은 의존 역전 원칙을 통한 고수준 정책과 저수준 구현 세부 사항의 분리라고 할 수 있다. 장점: 재활용성이 높다. 단점: 속도가 느리다. 절차 지향 프로그래밍 Def) 절차 지향 프로그래밍 : 순서대로 프로그램 전체가 유기적으로 연결되도록 하는 프로그래밍 기..

3. 인프라 및 클라우드

클라우드(cloud) Def) 클라우드: 인터넷을 통해 접근 가능한 서버와 서버에서 작동하는 소프트웨어와 데이터베이스를 의미한다. 클라우드 컴퓨팅이란? 인터넷 기반 컴퓨팅의 일종으로 자신의 컴퓨터가 아닌 클라우드에 연결된 컴퓨터로 정보를 처리하는 기술을 말한다. 사용자의 직접 관리없이 데이터 스토리지와 컴퓨팅 파워와 같은 “컴퓨터 시스템 리소스”를 필요 시 바로 제공하는 것을 말한다. ex) 네이버 오피스, 구글 docs, work space, acrobat 클라우드 컴퓨팅 모델 - laas, paas, saas 란? laas(Infrastructure as a Service, 서비스형 인프라스트럭처): 비즈니스 운영에 필요한 스토리지, 네트워킹 및 컴퓨팅 리소스를 제공한다. ex) AWS EC2 hos..

Chapter 09.04 쿼리 힌트

MySQL 서버는 인간이 원하는 서비스를 100%이해하지는 못한다. 따라서 서비스 개발자 또는 DBA보다 MySQL서버가 부족한 실행 계획을 수립할 때가 있다. RDBMS에서는 이러한 목적으로 힌트라는 기능이 제공된다. MySQL서버에서 가능한 쿼리 힌트는? 인덱스 힌트: 예전 버전에서 사용되던 힌트들 ex) USE INDEX, STRAIGHT_JOIN 옵티마이저 힌트 ex) MySQL 5.6 부터 새롭게 추가되기 시작한 힌트들을 뜻한다. STRAIGHT_JOIN 도 포함한다. 9.4.1 인덱스 힌트 USE INDEX, STRAIGHT_JOIN 등을 포함한 인덱스 힌트들은 모두 MySQL 서버에 옵티마이저 힌트가 도입되기 전에 사용되던 기능들이다. 이들은 모두 SQL 문법에 맞게 사용해야되므로 사용하게 ..

2. 운영체제, 네트워크, 보안과 암호학

2.1 네트워크(Network) 웹 통신의 큰 흐름에 대해 설명하라 TCP, UDP 차이점 TCP(transmission control protocol, 전송 제어 프로토콜)는 연결형 프로토콜로서 데이터 전송 순서, 신뢰성 보장, 속도는 느림 에러 발생 시 재전송을 요청하고 에러를 복구한다는 점에서 UDP와 다르다. ex) web, e-mail, HTTP, SMTP, 파일 전송 등 UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜): 비연결형 프로토콜로서 데이터 그램 단위로 데이터를 전송하는 프로토콜이다. 데이터를 보낼 때마다 어떤 응답이 발생하지 않는다. 연결이 잠깐 끊기더라도 그 내용을 추측 가능한 데이터를 보낼 때 사용한다. ex) 스트리밍, 전화, 브로드캐스팅 TCP는 ..

1. 데이터베이스(DataBase)

데이터베이스(DataBase) 데이터베이스 사용하는 이유와 특징 데이터베이스를 사용하는 이유: 데이터베이스가 사용되기 이전에는 파일 시스템을 이용했으나 데이터 종속성, 중복성, 데이터 무결성 문제가 있었다. 데이터베이스의 특징 독립성 물리적 독립성: 데이터베이스 사이즈를 늘리거나 데이터 파일 늘리거나.. 해도 관련된 응용 프로그램을 수정할 필요 없다. 논리적 독립성: DB는 논리적 구조로 다양한 응용 프로그램의 논리적 요구를 만족시킬 수 있다. 무결성(integrity): 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능, 데이터의 유효성 검사를 통해 무결성 유지 무결성은 정확성, 일관성, 유효성이 유지되는 것을 의미한다. 보안성: 인가된 사용자들만 데이터베이스에 접근 가능하도록 유지..