분류 전체보기 50

Clean Architecture - 1장. 설계와 아키텍쳐

설계(Design)와 아키텍처(Architecture)는 아키텍트(architect) 관점에서 차이가 없다. 단, 아키텍처는 고수준, 설계는 저수준의 무언가를 가리킬 때 흔히 사용된다. 흔히 사용된다는 것이지 반드시 그렇다는 게 아니다. 하지만 설계와 아키텍처(이하 설아)는 개별로 존재할 수 없으며, 각각을 구분 짓는 경계도 명확하지 않다. 고수준에서 저수준으로 향하는 의사결정의 연속성만 있을 뿐이다. 설아의 목표와 품질 척도 설아의 목표는 다음과 같다. "필요한 시스템을 만들고, 유지보수하는 비용을 최소화하는 것이다." 설아의 품질 척도는 다음과 같다. "새로운 기능을 추가할 때마다 비용이 증가한다면, 나쁜 설계이다." 나쁜 설아를 하는 이유 코드는 나중에 정리하면 돼, 당장은 시장에 출시하는 게 먼저..

편(編)/책 2021.11.02

kubernetes 설치 - minikube

로컬 환경에서 싱글 노드 구성, 멀티 노드 구성을 쉽게 할 수 있다. 가상머신 혹은 컨테이너를 사용하기 때문에 어떤 운영체제를 사용하더라도 문제없이 사용할 수 있다. 요구사항 CPU: 2 core 이상 RAM: 2 GB 이상 DISK: 20 GB 이상 컨테이너 혹은 가상머신 - Docker, Hyperkit, Hyper-V, KVM, Parallels, Podman, Virtualbox, Vmware 같은 것 중 하나 개인적으로 Window : Virtualbox Linux : KVM 를 추천한다. minikube 설치 운영체제에 따라 minkube를 설치하는 방법이 아주 조금 다르다. windows https://storage.googleapis.com/minikube/releases/latest/mi..

편(編)/설치 2021.10.25

kubernetes 설치

kubernetes는 이름이 너무 길기도 하고, 오타 자체도 너무 많이 발생해서 보통 k8s로 줄여 부른다. 이 포스팅에서도 k8s로 줄여 부르겠다. k8s는 컨테이너 오케스트레이션 도구이다. 컨테이너 오케스트레이션 도구는 다수의 노드에서 컨테이너의 배포, 관리, 확장, 네트워크의 자동화를 해준다. 하지만, 이 컨테이너 자동화를 하기 위해서 설정해야 하는 것들이 아주 많아서 설치 자체가 어렵다. 이러한 문제를 해결하기 위해 k8s를 쉽게 설치할 수 있는 다양한 방법이 존재한다. 이 포스팅에서는 k8s를 설치하는 방법들에 대해 다루겠다. 새로운 설치 방법을 접할 때마다 업데이트할 예정이니, 설치 자체가 너무 힘들다 싶을 때 한 번씩 들려주시면 감사하겠다. 설치 방법 설치 방법에 앞서 자신이 k8s를 설치하..

편(編)/설치 2021.10.25

버전(Version)

소프트웨어는 생물체와 같아서 발전하기도 하고, 퇴보하기도 하고 병에 걸리기도 한다. 애지중지 키우다 보면, 회사에서 이 소프트웨어를 다른 회사 혹은 개인에게 분양시켜버린다. 이때부터, 나는 불안장애에 걸리게 된다. 솔직히 잘살고 있는지는 궁금하지 않고, 나에게 아무 연락도 없길 바라게 된다. 분양한 건데, 분양받은 사람이 잘 키워야지... 그런데 대부분은 연락이 온다. 애가 아파요. 애가 이걸 못해요. 등등 아 글 쓰면서 상상만 해도 가슴 아프다. 이때부터 분양 당시 아이의 나이가 중요해진다. 우리는 이 나이를 "버전"이라고 한다. 소프트웨어 버전이 중요한 이유 더보기 버그는 개발자 모르게 발생했다가도 소프트웨어가 성장하면서 개발자 모르게 사라지기도 한다. (어떤 개발자가 자신이 실수한 거라 아무도 모르..

술(述)/풀이 2021.10.20

포인트 릴리즈 vs 롤링 릴리즈

운영체제(OS, Operating System)를 릴리즈(release)할 때, 아래와 같은 이름을 붙여서 릴리즈한다. Windows 8, 10, 11 Ubuntu 20.04.3, 20.10 Android 4.4 Kitkat, 5.0 Lollipop, 9 Pie 왜 굳이 8, 10과 같은 버전을 써서 릴리즈할까? 항상 최신 버전으로 릴리즈하면 안될까? 이 포스팅에서는 왜 그러는지, 다른 릴리즈 방법은 무엇인지 관한 내용을 다루겠다. 릴리즈 릴리즈는 "풀어주다", "놓아주다", "공개하다", "발표하다"라는 뜻이 있다. 사실 릴리즈라고 읽고 쓰기는 하지만, 릴리스라고 발음하는 게 맞다. 하지만, 많이 쓰는 게 깡패라고, 릴리즈도 통용된다. OS를 릴리즈하는 방식은 당연하게도, 해당 OS를 판매하는 곳에서 ..

술(述)/비교 2021.10.17

결합도와 응집도

"응집도는 높이고, 결합도는 낮춰라."라는 말을 어디선가 한 번쯤 들어봤을 것이다. 심지어는 각각에 대해서 공부도 해봤을 수도 있다. 단지, 잘 기억나지 않는다. 내가 그렇다. 그런 의미로 결합도와 응집도에 관한 내용을 포스팅하겠다. 모듈 결합도와 응집도에 관한 내용을 설명하기에 앞서 모듈이란 것에 대해 설명을 해야 한다. 모듈은 네이버에서 다음과 같이 정의하고 있다. "프로그램을 기능별로 나눈 논리적인 일부분" 그렇다. 어디까지나 논리적으로 분리된 부분을 말한다. 내가 만든 프로그램을 무지성으로 2개로 쪼갠다고 하면 내 프로그램은 두 개의 모듈로 이루어진 프로그램이 된다. 내가 논리적이라고 우기면 2개의 모듈이 맞다. 하지만 이런 식으로 쪼갠 모듈이 모듈로서 적합하다고 묻느냐면 당당히 아니라고 이야기 ..

술(述)/풀이 2021.10.12

Gitlab 요모조모

gitlab을 사용하다 보면 여러 상황을 마주하게 된다. 이 포스팅에서는 그에 대한 일들을 소개한다. 비밀번호 리셋 비밀번호는 그냥 까먹는 경우가 많다. 자동 로그인해두고 사용하거나, 코딩을 잠시 멈추거나 해서 비밀번호를 잊을 수 있다. 그럴 경우의 해결 방법은 아래와 같다. # gitlab이 설치된 서버 접속 gitlab-rake "gitlab:password:reset" 위와 같이 gitlab-rake 명령어를 통해서 비밀번호를 초기화할 수 있다. 특히, podman 을 사용하는 경우는 아래와 같이 해결하면 된다. sudo podman exec -it gitlab-rake "gitlab:password:reset" 백업 및 복구 gitlab을 업그레이드를 하거나, 혹은 주기적으로 gitlab의 데이터..

집(輯) 2021.10.06

kubernetes 설치 - kubespray

요구사항 kubespray는 ansible을 통해 kubernetes를 자동으로 다수의 노드에 설치해준다. 하지만, 모든 운영체제에서 설치할 수 있는 것이 아니며, 아래의 운영체제에서만 설치할 수 있다. Ubuntu 16.04, 18.04, 20.04 CentOS/RHEL/Oracle Linux 7, 8 Debian Buster, Jessie, Stretch, Wheezy Fedora 31, 32, CoreOS openSUSE Leap 15 Flatcar Container Linux by Kinvolk 다른 운영체제에서도 막상 해보면 될 수 있으나, 위의 운영체제들은 공식 웹사이트에서 설치 가능하다고 표기되어있다. 패키지 설치 이 포스팅에서는 Ubuntu 20.04를 기준으로 진행하며, 패키지 설치를 제..

편(編)/설치 2021.10.04

gitlab 설치

개요 gitlab은 git 기반 코드 저장소이다. 필자는 gitlab을 외부에 코드를 공개하기는 싫고, 나 혼자 쓰고 싶을 때 사용한다. 이 포스트에서는 podman을 이용하여 gitlab을 설치하는 방법에 대해 다룬다. 요구 사항 CPU core: 2개 이상 RAM: 4G 이상 라즈베리파이 같은 경우, gitlab 구동은 굉장히 어렵다. 차라리 gogs같은 다른 코드 저장소를 사용하기를 바란다. 단, gogs는 gitlab과 같은 다양한 기능을 제공하지 않는다. host 설정 host 설정은 보통 안 해도 된다. 그런데, OS에 따라 localhost가 설정 안 되어 있을 수가 있다. 설정 안 되어 있을 때만 설정하면 된다. /etc/hosts 127.0.0.1 localhost podman 설치 [편..

편(編)/설치 2021.09.20

podman 설치

docker가 보안 이슈를 문제 삼아 유료화되었다. 물론, 개인용으로는 계속 무료로 사용할 수 있다. 하지만, 충분한 대체재인 podman이 존재하므로, 이 기회에 podman을 사용하기로 했다. 현재는 Archlinux에 대한 것만 정리했다. 나머지 운영체제는 기회가 되면 살펴보겠다. Archlinux 설치 sudo pacman -S podman --noconfirm 설정(주의) 일반 사용자가 podman을 실행할 수 있도록 해준다. 하지만, 보안 문제로 인해 권장하지 않는다. 네트워크의 격리가 보장되었을 때, 혹은 잠깐의 테스팅일때에만 수행하길 바란다. sudo sysctl -w kernel.unprivileged_userns_clone=1 sudo touch /etc/subuid /etc/subgi..

편(編)/설치 2021.09.14