모바엑스텀(MobaXterm)이란?모바엑스텀은 SSH 접속 도구로 사용이 편리하고 SFTP 등을 지원해 많은 사람들이 이용한다. 나도 예전엔 SSH는 putty를 사용하고 SFTP로는 파일질라를 따로 사용했는데, 모바엑스텀은 SSH와 SFTP를 모두 지원하기 때문에 훨씬 편리하다. 모바엑스텀은 SSH, SFTP 뿐만 아니라 Telnet, Rsh, Sdmcp, RDP, VNC, FTP, Serial, File, Shell, Browser, Mosh, Aws S3, WSL 등도 지원한다. 추가로 서버에 접속하는 계정과 비밀번호를 저장해서 자동 로그인도 가능하다. 모바엑스텀 설치https://mobaxterm.mobatek.net/download-home-edition.html MobaXterm free ..
PIO(Programmed I/O)PIO는 주변장치들(I/O device) 사이 전송되는 모든 데이터가 CPU를 거쳐간다. 이때 CPU는 주변 장치들에 대한 지속적인 모니터링을 통해 주변 장치들이 준비가 됐는지 체크하기 때문에불필요하게 CPU 주기를 낭비하고 "Busy" 상태가 빈번하게 된다. 이러한 단점을 극복할 수 있는 방식이 Interrupt Initiated I/O 방식이다. Interrupt Initiated I/OPIO에서 CPU가 지속적으로 주변 장치들의 상태를 확인한 것과 다르게,Interrupt Initiated I/O 방식은 주변 장치들이 available 상태가 되면 interrupt를 발생시킨다. CPU는 interrupt가 발생하기 전까지 다른 작업을 수행하고,interrupt..
모놀리틱(Monolithic) 아키텍처 모놀리틱(Monolithic) 아키텍처는 하나의 어플리케이션을 단일 독립 시스템으로 구축하는 아키텍처를 뜻한다. 소규모의 어플리케이션이라면 모놀리틱 아키텍처가 간단한 구조로 유지보수하기 더 용이할 수 있다.하지만 어플리케이션의 규모가 커질수록 아래와 같은 어려움들이 발생한다. 영향도 및 전체 구조 파악이 어려움빌드, 테스트, 배포 시간이 증가부분의 장애가 전체 장애로 이어짐부분적인 scale-out이 어려움작은 수정 사항에도 전체를 재빌드 및 배포해야 함이러한 문제점들을 보완하기 위해 등장한 아키텍처가 바로 MSA(Micro Service Architecture)이다. MSA(MicroService Architecture)란?미국의 유명한 소프트웨어 개발자 마..
Virtual Thread의 탄생 배경Java 개발자들은 오랜 기간 동안 병렬 처리 단위로 스레드를 사용했다.스레드는 독립적으로 실행되며 각각의 스택(Stack)을 가지고 있고 프로세스보다 가벼워 컨텍스트 스위칭(Context Switching)이 빠른 장점이 있다. 그러나 자바 스레드는 운영체제(OS) 스레드의 Wrapper로 구현되어 있기 때문에 OS의 스레드보다 많은 수를 가질 수 없다. 게다가 OS 스레드는 비용이 비싸기 때문에 많은 수를 생성하기 힘들다. 문제는 많은 환경에서 Request-per-Thread 구조를 사용하고 있다는 것이다.이는 요청 하나에 스레드 한개가 작업을 진행하는 구조를 뜻한다.스레드 1개당 1MB 사이즈를 차지한다고 했을 때 8GB 메모리 환경에서 약 8000개의 스레드..
새로운 LTS 버전 Java 21의 등장Jrebel의 2023 Java Developer Productivity Report에 따르면 31%는 Java 8을 사용하고, 28%가 Java 11을, 그리고 19%가 다른 버전의 Java를 사용한다고 한다. 이런 상황 속 2023년 9월 19일 새로운 JAVA LTS 버전인 Java 21이 출시되었다. Java의 최신 버전을 적용하는 것은 아직 쉽지 않을지 모르지만 Java 21은 적용을 고려해 볼 만큼 좋은 발전들이 존재한다. Java는 언어의 발전을 위해 JEP(Java development Enhancement Proposal)를 사용해 새로운 기능들을 추가한다.JEP는 말 그대로 JDK를 향상시키기 위한 제안으로 새로운 기능을 Java에 추가할 수 있는..
예외 처리어떤 프로그램을 만들더라도 예외는 발생하기 마련이다.예전부터 이러한 예외처리를 위해 다양한 방법이 생겨났다. 기본적인 if문부터 시작해서 try-catch, throws 등등 예외 처리를 위한 많은 방법이 존재한다. 그러나 수많은 예외를 if문, try-catch 문으로 모두 처리하기에는 코드가 너무 복잡하고 어려워진다. 스프링은 @ExceptionHandler라는 어노테이션으로 매우 편리한 예외 처리 기능을 제공한다. @ExceptionHandler@ExceptionHanlder 어노테이션을 사용하면 컨트롤러(Controller) 계층에서 발생하는 예외를 처리할 수 있다. @RestController@Slf4jpublic class BoardController { @ExceptionHa..
영양제, 뭘 먹어야 하나?평소에 건강에 관심이 많은 나는 다양한 영양제를 챙겨 먹는다.어떤 사람은 영양제의 효과에 의문을 품기도 하고, 효능이 크지 않다는 의견들도 더러 있다. 약사, 의사, 교수, 기업 관계자 등 많은 사람들의 영양제에 대한 의견이 다양하기 때문에비판적인 시각을 가지고 잘 판단하여 영양제 섭취를 고려해야 한다. 나는 영양제를 섭취하며 그 효과를 몸으로 체감하고 있기 때문에 영양제 섭취에 긍정적이다.너무 과한 섭취와 맹목적인 신뢰는 지양해야겠지만, 몸에 필요한 성분이 부족할 때 영양제의 도움을 받는 것은건강에 큰 도움이 된다고 생각한다. 영양제에 관한 여러 정보를 찾아보던 중, 한 약사 유튜버(이하 고약사)가 추천하는 영양제 조합에 대해 알게 되었고몇 년째 꾸준히 해당 조합으로 영양제를 ..
필터(Filter)란? 필터(Filter)는 서블릿(Servlet)에 도달하는 요청(Request)이나 서블릿에서 클라이언트에게 보내는 응답(Response)을 중간에 조작하거나 막을 수 있는 JAVA 진영의 기술이다. Filter는 Spring MVC에 종속되지 않아 스프링 환경이 아닌 다른 환경에서도 사용가능하다. 예를 들어 Spring Security는 Filter를 이용한 Authentication 및 Authorization 기술이다. Spring Security를 사용하면 모든 요청과 응답을 중간에서 검증할 수 있다. 이러한 이유로 Spring Security는 Spring MVC 환경이 아닌 곳에서도 사용할 수 있다. Filter Chain 필터는 체인으로 구성될 수 있고 중간에 필터를 자유..
Bean Validation이란? Bean Validation이란 어노테이션을 통해 자바 빈(Java Bean)의 유효성을 검증할 수 있는 기술 표준(JSR380)이다. 어노테이션을 사용하여 유효성 검사 규칙을 정의할 수 있어 사용하기 편리하다. 아래와 같이 자바 빈 클래스의 필드나 메서드에 특정 어노테이션을 적용해 유효성 검사를 수행할 수 있다. @Email private String email; @NotNull private Long id; @Email public String getEmail(){ return email; } 예를 들어 @Email 어노테이션으로 해당 필드에 이메일 형식의 값이 들어오는지, @NotNull 어노테이션을 통해 Null 값을 검사할 수 있다. 이러한 Bean Valida..
OpenFeign 이란? OpenFeign은 선언적인(Declarative) HTTP Client 혹은 REST Client이다. FeignClient로 선언된 인터페이스를 구현하고 어노테이션을 달아주는 것만으로 HTTP Client 서비스를 작성할 수 있다. 이러한 OpenFeign은 Netflix에서 Netflix OSS 프로젝트의 일환으로 개발했다. 이후 오픈소스 커뮤니티로 옮겨졌고 현재는 스프링 클라우드(Spring Cloud) 생태계에 통합되어 Spring Cloud OpenFeign으로 사용 가능하다. OpenFeign vs RestTemplate 만약 다른 외부 날씨 API를 호출하려고 할 때 RestTemplate을 활용하면 아래와 같이 코드를 작성할 수 있다. @Service public..