각종 학습 요약
-
리눅스 가상메모리 켜기각종 학습 요약/Web 2023. 7. 6. 13:19
내용 보통 aws 프리티어를 처음 사용해보게 되면 거기에 웹서버도 올리고, 어플리케이션 서버도 돌려보고, rdb도 돌려보고 이것저것 시도하게 된다. 여기까진 괜찮을 수도 있다. 하지만 프로젝트를 빌드하거나, 도커를 올리게 되면 100% 멈춰있는 터미널을 만나게 될 것이다. 메모리 부족 문제다. 가상메모리(swap)를 설정해보자. 언제 가상메모리를 구성할까 부족할때 하면 된다. 그런데 메모리가 4G 미만이라면, 그냥 기본적으로 해두면 좋다고 생각하면 될 것 같다. 메모리 확인하기 다음과 같이 해본다 free -m실 메모리 정보 밑에 swap 0 0 0 과 같이 나오면 스왑메모리가 없는 것이다. 만약에 있다면 또 만들 필요는 없다. 여러개의 스왑파일을 만들어놔도 동작하는 데에는 무방하지만, 보통은 그렇게 할..
-
프론트엔드(웹서버)와 백엔드(WAS)를 나눈 리버스 프록시 구성해보기(w/ubuntu, nginx)각종 학습 요약/Web 2023. 6. 20. 11:11
상황과 필요 ubuntu 22.04에서 web server로 nginx를, WAS로 tomcat(springboot의 embedded tomcat)을 사용하는 상황으로 가정한다. 프론트는 react나 vue 등이 대응하고, api 호출만 백엔드가 호출되도록 하고 싶다. 쉽게 말해, 프론트와 백엔드 서버를 나눈 리버스 프록시 구성이다. 이때 https를 어떤 식으로 적용하면 좋을지 생각해보자. 가장 간단한 생각으로, '인증서를 p12 방식으로 변환하여 내장 톰캣 안에 넣어두면 되지 않나? 그러면 WAS만 띄우면 되는데'라고 생각이 들 수 있다. 하지만 그건 몇 가지 불편한 점이 있다고 생각한다. 어플리케이션 서버가 클라이언트에게 노출된다. 어플리케이션 서버의 컴퓨팅 파워는 어플리케이션을 구동..
-
API 호출을 위한 세 가지 Spring 도구(Spring 6에서 새롭게 지원하는 HttpInterface)각종 학습 요약/Spring 2023. 3. 17. 14:12
개요 오늘 포스팅은 토비님의 'Spring 6의 새로운 HTTP Interface와 3 가지 REST Clients 라이브 코딩' 영상을 보고 나서 작성하는 글입니다. Spring에서 제공하는 RestTemplate과 WebClient, 그리고 Spring 6에서 새롭게 제공하게 된 HttpInterface를 간단히 살펴봅니다. 어떻게 사용되는지 하나씩 코드로 살펴보겠습니다. 1. RestTemplate 간단히 실행 결과 확인을 위해 ApplicationRunner를 사용합니다. RestTemplate은 Spring3.0 부터 사용되어온 동기 방식의 클라이언트입니다. Spring Web 프로젝트를 사용하면서 외부의 api를 호출할 일이 있으면 가장 편하게 선택할 수 있는 방법인 것 같아요. 사용 방법 자..
-
리눅스 인스턴스의 성능 지표 모니터링 - sysstat, sar각종 학습 요약/Linux 2022. 12. 1. 16:54
내용 letsseoul 프로젝트를 진행하면서 aws ec2 amazon linux2의 인스턴스의 성능 지표를 확인할 일이 생겼는데요. 공부한 내용을 정리해서 이야기하는 글입니다. 개요 리눅스 인스턴스의 모니터링을 위해 주로 사용되는 패키지는 sysstat, iostat 두 가지가 있습니다. 이 글에서는 제가 직접 사용 중인 aws ec2 amazon linux2를 기준으로 설명할 것이기 때문에 sysstat을 활용하는 법에 대해 설명하려고 합니다. sysstat을 설치하고 나면 sar라는 분석툴을 사용할 수 있습니다. cpu, memory, network, disk i/o 등에 대한 지표를 아주 상세하게 확인할 수 있습니다. 😇 기본 설정 확인 설치를 하고 나면 /etc/sysconfig/sysstat의..
-
useradd / adduser : 팀원들을 위해서 서버 계정을 추가해보자각종 학습 요약/Linux 2022. 8. 27. 12:06
오랜만에 적는 포스팅이네요😃 최근에 aws 프리티어로 첫 프로젝트를 가볍게 시작하고 있습니다. 그래서 팀원들이 서버에 붙어서 작업할 수 있도록 프로젝트 계정을 만들어 나눠줘야겠다는 생각이 들었는데요. 근데 혹시나 루트 계정을 줬다가... 프로젝트와 상관없는 파일을 지워버리기라도 하면 얼마나 두근두근하고 식은땀이 나겠어요... 그럴 일이 생기지 않도록 프로젝트 계정을 하나 만들어 안전하게 작업할 수 있도록 해주었습니다 👷 간단한 작업이지만 하다보면 항상 '아 근데 머였지' 하는 부분이 생기는 작업 같기도 해서 포스팅으로 남겨놓으려고 합니다. 😅 계정 추가 계정 추가는 useradd 혹은 adduser라는 커맨드를 통해 가능합니다. sudo adduser NEWUSERNAME저의 얄팍한 지식으..
-
JWT는 왜 base64로 encoding 하는 걸까?각종 학습 요약/Concept 2022. 7. 28. 10:53
요즘 JWT를 공부하고 있는데요. 사용할 때 보면 약속이라도 한 듯이 encode/decode해서 사용하더라고요. encrypt/decrypt도 아니고(그러니까 보안의 목적도 아니고), 굳이 난독화 해서 보낼 이유가 있나? 라는 생각이 들었어요. JWT는 서버 부하를 줄여주기 위해 도입되는 컨셉트인데, 쓸데없는 연산처리를 덧붙인다고? 그럴리가 없을텐데. 그럼 이유가 있을텐데. 고런 의식의 흐름이 흘러갔습니다. 그래서 일단 구글링을 해보았는데요. 시원하게 이해되는 명쾌한 답변은 얻지 못했습니다. 아쉽게도요. 그래도 찾아본 내용들을 바탕으로 개인적으로 생각을 해보았고, 제 나름대로 내린 답을 공유해보겠습니다. 비판적으로 수용해주세요. 😀 JWT가 사용될 환경을 상상해보자 하나의 서버가 모든 것을 처리할 수 ..
-
Spring : 이벤트 리스너 기본 개념 (@EventListener, @TransactionalEventListener)각종 학습 요약/Spring 2022. 7. 11. 17:36
Spring : 이벤트 리스너 기본 개념 (@EventListener, @TransactionalEventListener) 이 글에서는 스프링에서 이벤트를 처리하는 어노테이션을 소개합니다. 스프링에서는 이벤트 어노테이션을 통해서 어플리케이션 전체에 이벤트를 발행(Publish)할 수 있습니다. 어떻게 이벤트를 발행하고 어떻게 이벤트리스너를 구현하는지 알아보도록 할게요. @EventListener Spring 4.2 이상에서 이벤트를 처리하는 아주 간단한 방법으로 @EventListener가 적용되었습니다. 이로써 특정 클래스를 상속하지 않고도, 즉 스프링에 종속되지 않고 순수 POJO 객체만을 활용해서도 이벤트 프로그래밍이 가능합니다. 간단한 사용 예시를 남겨보겠습니다. 이벤트를 발행할 쪽에서는 Appl..
-
Concept: 영속성Persistence이란?각종 학습 요약/Concept 2022. 7. 5. 11:10
Concept: 영속성Persistence이란? 영속성이란 말 자체가 너무 낯설어서 어렵게 느껴지지만 개념 자체는 쉽기 때문에 간단히 짚고 넘어가고자 합니다. 영속성 혹은 지속성으로 번역되는 Persistence는 말 그대로 뭔가 유지되게 해주는 성질/상태입니다. 프로그램은 컴퓨터의 메모리 위에 생성되어 실행됩니다. 여기서 메모리란 대개 RAM을 말하는 것이죠. RAM은 휘발성 메모리이기 때문에 컴퓨터가 종료된다면 실행되던 프로그램의 상태를 유지하지 못합니다. 프로그램 상 유지되어야 할 값이나 상태가 존재한다면, 별도의 저장소에 기억해두도록 해야 합니다. 한 마디로 요약하면, 영속성은 프로그램의 값이나 상태를 별도의 저장소에 기록해서 머신이 종료되어도 프로그램의 상태가 유지되도록 하는 것입니다.