전체 글 354

[Docker] 설치 on Ubuntu 20.04 Focal

Docker 를 Ubuntu 에 설치하는 방법은 3가지가 있다. docker repository를 통해 설치하는 방법 수동으로 deb 파일을 다운로드하여 설치하는 방법 별도의 설치 스크립트를 이용하는 방법 여기서는 첫번째인 docker repository를 설정하고 이를 통해 apt로 설치하는 방법을 알아보자. 1) 기존 docker 관련 package들을 삭제 $ sudo apt-get remove docker docker-engine docker.io containerd runc Ubuntu 20.04 를 바로 설치한 직후에는 docker 관련 package 들이 설치되어 있지 않지만, 이전에 docker를 사용한 이력이 있을 경우 삭제해 준다. 2) Docker Repository 를 등록하기 위한..

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

독립적으로 동작하는 다수의 작은 서비스들이 상호 협업하는 구조의 아키텍처 기존 모놀리식 (Monolithic) 아키텍처와 같이 하나의 서비스로 되어 있는 구조에서 기능을 수정하거나 추가할 경우 해당 코드들이 기존의 코드들에 영향을 미칠 수 있고, 이는 점점 더 시스템의 유지 보수를 어렵게 한다. 반면, 마이크로 서비스 (Microservice) 아키텍처는 내부적으로 다수의 작은 서비스들을 가지고 있고, 각 서비스들은 상호협업 한다. 각 서비스들은 독립적이고, 자율성을 가지기 때문에 기능이 수정되거나 추가되더라도 기존 다른 서비스에 미치는 영향은 제한적이다. (각 서비스들은 네트워크 호출을 통해 통신하기 때문에 서로 다른 기술 기반으로 구현 가능하다는 특징도 있음) 마이크로 서비스 아키텍처는... 분산 시..

Use Case Model - Use Case Diagram

Use Case Model 시스템의 Functional Requirements를 표현한 모형 Actor와 Use Case(UC), 그리고 이들간의 관계(Association)를 Diagram으로 표현 (Use Case Diagram) Actor 시스템과 Interaction하는 모든 요소 개발 범위 외부에 존재 Use Case 시스템이 제공하는 기능을 의미 사용자 관점에서 개별적인 기능 단위 표현 필요 Association Actor와 Use Case 간의 관계 및 방향 Use Case 간에는 association을 쓰면 안되고, , 만 허용 임의의 UC내에 특정 UC가 있을 경우 로 표현 (공통의 부분을 떼어 내어 중복 방지를 위한 모듈화를 위함) 특정 조건에 발생하는 추가 UC의 경우 로 표현 (가변..

SOLID - 객체 지향 디자인을 위한 5가지 기본 원칙

유지가능(Maintainable)하고 확장가능(Extensible)한 시스템을 위한 객체 지향 디자인을 위한 5가지 기본 원칙 SRP: Single Responsibility Principle OCP: Open-Closed Principle LSP: Liskov Substitution Principle ISP: Interface Segregation Principle DIP: Dependency Inversion Principle SRP: Single Responsibility Principle 하나의 모듈은 변경을 위한 하나의 이유만 있어야 한다. 모듈을 변경해야 할 이유가 두개 이상이라면 해당 모듈은 두개 이상의 책임을 가지고 있다는 의미로 SRP를 지키지 못한 것이다. OCP: Open-Closed..

Architectural Drivers - 핵심 요구 사항

Architectural Drivers (AD) SW architecture를 Design하기 위해 Architect가 파악해야 할 Key Requirements. 시스템의 Fundamental에 영향을 미침 시스템을 위한 모든 요구 사항을 의미하지는 않음 (AD는 전체 Requirement의 subset) Architectural Driver는 architectural decision에 영향을 미치기 때문에 조기 파악이 중요 Architectural Driver의 종류 Functional requirements => Use Case Model과 Use Case Specification (Scenarios)를 통해 파악 Non Functional requirements Quality attributes ..

[Design Pattern] Singleton 패턴

인스턴스가 하나 뿐인 객체를 만들 수 있게 해주는 패턴 특정 클래스에 대해 객체 인스턴스를 하나만 만들 수 있다. 사용 용도> 자원 관리 Pool, 특정 하드웨어를 Control하는 디바이스 드라이버 등 비슷한 역할을 하는 전역 변수와의 비교> 전역 변수는 애플리케이션 시작될 때 생성 불필요하게 자원을 잡아먹는 경우 발생 Singleton은 필요할 때 객체 생성 [Singleton 기본 구조] public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if(uniqueInstance == null) uniqueInstance = new..

Language/Java 2020.11.26

[VSCODE] Github Pull Requests 생성하기

[Github 에 반영하기 (git commit/push)] 에서 보았듯이 write 권한이 없는 repository 에는 직접 반영을 할 수 없다. 이에 write 권한을 가지고 있는 계정의 review를 받고 해당 계정을 통해 반영이 이루어 져야 한다. 이러한 과정을 Pull Requests 라고 하며 github 의 tab 들 중 하나에서 확인할 수 있다. Pull Request 를 위한 전반적인 Flow 에 대한 이해 Pull Request 를 올리는 실제 사례 다수 개의 Pull Request 를 올리는 방법에 대한 이해 Pull Request 를 위한 전반적인 Flow 에 대한 이해 Pull Request 는 fork 된 repository 를 통해 이루어지게 되고, 이를 위한 reposito..

[VSCODE] Github 에 반영하기 (git commit/push)

git clone 하여 local PC 에 코드를 sync 한 이후 코드를 주성하여 다시 github repository 에 반영해야 하는 경우가 있다. [Github 와 연동하기 : https://technote.kr/352] 코드 반영은 Flow는 다음과 같다. 1) 코드 수정 2) [Ctrl + Shit + `] 을 눌러서 teminal 을 실행시킨 후 수정 코드 실행해서 에러 유무 확인 3) 문제가 없을 경우 왼쪽 세번째 아이콘 선택 4) 자동으로 수정된 파일들이 탐지되고, 상단에 수정 내용 작성한 후 "V" 아이콘 선택하여 commit 생성 (git commit) 5) 하단에 push 가능한 commit 의 수가 나오고 해당 버튼 누르면 github repository 로 push 진행 (git..

[VSCODE] Github 와 연동하기 (git clone)

vscode 를 기반으로 github project 를 작업할 때 가장 먼저 진행되어야 할 것은 github repository를 local PC로 git clone 하는 것이다. cmd 로 진행시에는 아래와 같이 진행하면 되지만 vscode 와 연동시에는 vscode의 UI 를 통해 진행해야 자동으로 vscode의 workspace까지 생성된다. D:\Github>git clone https://github.com/technotekr/Sample.git Cloning into 'Sample'... remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% ..