728x90
반응형
SMALL

전체 글 219

[MSA] Part 2. Spring Cloud란?

Spring Cloud는 분산 시스템 (MSA 역시 포함)에서 흔하게 사용되는 구조 및 패턴을 쉽게 빌드 및 배포할 수 있도록 도와주는 툴을 제공해 준다. 그런 분산 시스템에서 흔하게 사용되는 기능(툴)이란 건 configuration management, service discovery, circuit breakers, routing, proxy, control bus, authentication, cluster 등 여러 기술이 있다. 참고 문서 (Spring Cloud 공식 문서) Spring Cloud Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems..

MSA 2023.10.06

[MSA] Part 1. Spring Microservices Architecture

요즘 한창 재미 들려 공부하는 MSA. 하나도 빠짐없이 배우고 공부한 내용을 기록해 보고자 한다. MSA(MicroService Application) 우선 MSA는 Micro Service Application의 약자로, 어떤 서비스가 가진 기능을 제공할 때 하나의 큰 애플리케이션에서 모든 기능을 수행하는 것이 아니라 기능별, 특징별, 구성별로 서비스들을 작게 나누어 각 기능에 특화된 하나의 작은 서비스를 구축하고 그 구축한 여러 개의 서비스들이 모여 거대한 하나의 애플리케이션이 되는 형태를 말한다. 위 사진에서 우측 SERVICE A, SERVICE B가 있다. 이 두 개의 서비스들은 각자 자신이 수행해야 할 최소 단위의 기능들만을 모아 구성된 하나의 작은 서비스다. 예를 들어, 쇼핑몰 기능을 제공하..

MSA 2023.10.05

[Typescript/MongoDB] Part 3. MongoDB: Nesting

전 게시글에서 조회하는 데 걸리는 시간과 비용을 줄이기 위해 populate, virtual을 사용했었다. 또 다른 방법으로는 블로그 내 있는 유저와 코멘트 데이터를 처음부터 nested 하는 것이다. Blog Schema 위 이미지를 보면 Blog안에 User와 Comments 정보를 가지고 있는데 현재 내 Blog Schema에는 Comments는 아예 포함되어 있지 않고 User는 ObjectId만을 가지는 상태다. const blogSchema = new Schema( { title: { type: String, required: true }, content: { type: String, required: true }, isLive: { type: Boolean, required: true, de..

Typescript 2023.10.05

Hard Link / Soft Link

Hard Link와 Soft Link 둘 다 어떤 파일(폴더)에 대한 링크을 만드는데 사용된다. Soft Link는 다른 말로 symbolic link 또는 symlink 라고도 한다. Hard Link와 Soft Link 그 차이를 이해하기 전에 아이노드라는 개념을 알아야한다. inode 위 그림을 살펴보자. 파일의 구조라는게 파일의 이름을 나타내는 부분과 그 옆에 아이노드의 주소를 가리키는 부분이 있다. 그림에서 Directory Entry라고 표시된 부분이 해당 부분이다. 여기서 아이노드의 주소가 아이노드를 가리키는데 아이노드는 해당 파일과 그 파일이 가지고 있는 데이터를 연결하고 있다. 그래서 사실 파일의 데이터는 그 파일이 온전히 가지고 있는게 아니고 아이노드라는 녀석이 해당 데이터의 주소를 가..

Linux 2023.10.04

사용자와 그룹과 파일 권한

root / group / user 리눅스라는 운영체제는 여러 사용자가 같이 사용할 수가 있는데 그 사용자들 중 최상위 권한을 가지는 root 계정이 있고 root 계정은 리눅스라는 운영체제를 설치하는 순간부터 바로 만들어지는 계정이다. 그 외 별도로 사용자를 또는 그룹을 생성하여 만들 수 있다. 그리고 이 root, group, user단위로 행위에 대한 제약 조건이 생긴다. 그래서 사용자와 그룹에 대한 지식이 필요하다. 파일 소유권 각 파일(폴더)은 소유권과 권한이란게 존재한다. 명령어 ls -al을 입력해보면 아래와 같이 노출되는 걸 볼 수 있다. 위 사진에서 빨간 박스의 첫 번째가 해당 파일에 Owner가 누구인지 나타내는 부분이다. 그리고 두 번째는 Group에 대한 설명이다. 즉, 이 파일에 ..

Linux 2023.10.04

Linux란 ?

Linux? Linux는 OS다. OS는 Operation System의 약자로 운영체제라고 불리고, 운영체제란 컴퓨터의 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어를 말한다. Linux에는 여러 배포판이 존재하는데 그중 흔히 사용되는 건 CentOS, Ubuntu, Fedora 등이 있다. 여러 배포판이 존재한다는 것은 배포판끼리 차이점도 존재한다는 뜻이지만 모든 배포판 사이에서도 공통점이 존재하는데 이는 리눅스 커널(Kernel)을 사용한다는 것이다. Linux Kernel? 리눅스 커널은 리눅스 운영체제에서 가장 중요한 구성요소라고 할 수 있다. 그리고 컴퓨터의 하드웨어들과 프로세스들의 핵심이 되는 인터페이스 역할을 한다. 그래서 커널이 도대체 무엇을 하는 걸까? - 메모리 관리: 어디에..

Linux 2023.10.04

[Linux]: 내가 쓰려고 기록한 유용한 Commands

man: manual의 약자, 특정 커맨드가 어떤 커맨드인지 알려주는 명령어 (예: man ls) man을 사용해서 특정 커맨드가 무엇을 하는지 알려주는 man page가 노출될 때 / 입력 후 원하는 검색어를 입력하고 엔터를 치면 해당 키워드를 찾아준다. 그리고 그다음 키워드를 찾을 때는 / 입력 후 엔터를 치면 그다음으로 넘어감 cat /etc/os-release: OS 버전 확인 find -mtime +3 -exec rm {} \; : 3일 지난 파일 삭제 find /tmp -size 0 -print -delete: /tmp 경로의 size 0인 파일에 대해 프린트 및 삭제 curl ifconfig.co: Public IP 확인 su : 유저 변경 echo: 터미널에서 echo 다음 인자로 입력한 ..

Linux 2023.10.04

Collection Vs. Iterator

Iterator, Collection 모두 자주, 용이하게 사용되고 있지만 쓰임새는 상당히 다른데 차이점을 모른 채 사용했던 내가 Collection으로 loop를 돌리면서 문제를 발견하고 그 문제를 공부하면서 알게 된 내용을 작성해보고자 한다. 참고 자료 https://www.geeksforgeeks.org/iterator-vs-collection-in-java/ Iterator vs Collection in Java - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes..

[Apache]: No space left on device: AH00023 해결

회사 JIRA, Confluence 서비스를 관리하고 있는데 어느날 서버가 내려가 있길래 확인해보니 이런 에러가 발생했었다. No space left on device: AH00023 ...(생략) 일단 여유 공간이 없다는 에러인 거 같은데 왜? 우선 아래 명령어로 상태를 확인해봤다. systemctl status httpd.service 별 내용 없고 아래 명령어를 실행해봐도 별 내용이 없었다. journalctl -xe 일단 httpd.conf 파일에 Syntax 문제가 없는지 확인을 하기 위해 다음 명령어를 실행했다. apachectl configtest 문제가 없다면 Syntax OK라는 결과가 나와야한다. 당연히 나온다. 파일 수정은 내가 안했으니까. 이럴 땐 아파치 로그를 봐야한다. 나 같은 ..

Troubleshooting 2023.10.03

[Typescript/MongoDB] Part 2. MongoDB: populate, virtual

모든 데이터 조회 시 중요하게 생각할 것은 요청의 수를 줄일 수 있다면 최대한 줄이는 게 좋다. 다음 그림을 보자. 이런 구조를 가지고 있는 Blog Collection이 있다고 할 때, 블로그 전체를 조회하는 무식한 경우는 당연히 없겠지만 그런 경우가 있다고 가정해보고 전체 블로그를 가져오게 될 때, 만약 해당 블로그의 유저 정보와 커멘트들도 담아와야 한다면 블로그마다 유저와 커멘트들을 조회하는 비용이 발생한다. 아래 코드를 보자. import { IBlog } from '../models/blog/blog'; import axios from 'axios'; const URI = 'http://localhost:3000'; const test = async () => { console.time('loa..

Typescript 2023.10.03
728x90
반응형
LIST