전체보기
gRPC란?
gRPC란? gRPC는 모든 환경에서 실행할 수 있는 최신 오픈 소스 고성능 원격 프로시저 호출(RPC) 프레임워크이다. RPC : RPC는 Remote Procedure Call(원격 프로시저 호출)의 약자로, 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술을 말한다. 일반적으로 프로세스는 자신의 주소공간 안에 존재하는 함수만 호출하여 실행이 가능하지만, RPC의 경우 자신과 다른 주소공간에서 동작하는 프로세스의 함수를 실행할 수 있게 해주는데, 이는 네트워크를 통한 메시징을 수행하기 때문이다. RPC는 다양한 언어와 프레임워크로 개발되는 MSA(Micro Service Architecture) 구조의 서비스를 만들게 될 때 유용하고..
프리코스
블로그를 꽤 오랜만에 작성하는 것 같다. 그동안 이런저런 일이 있었고, 조금 여유가 없기도 했는데 졸업을 앞두고 생각이 많아졌던 것 같다. 그러던 중 프리코스를 진행하게 되면서 다른 생각 없이 한 달 동안 온전히 몰입할 수 있었다. 이미 한 번 겪어봤던 프리코스였지만 작년과는 배우고 느낀 점이 또 달라서 이를 편하게 작성해보려 한다. 어떤 점이 달랐을까? 작년 프리코스를 시작하면서 처음 자바 공부를 시작했고, 이전에는 파이썬으로 알고리즘 문제 풀이 정도만 해본 상태여서 클래스나 객체, 생성자와 접근자 등에 대한 부분들이 생소하게 다가왔었다. 그러다 보니 자바에 대한 학습이 주를 이뤘고, 좋은 코드에 대해 고민하기보단 어떻게 구현해야 동작할 지에 대해서만 고민했었다.(정작 최종 코딩테스트에서는 구현해내지 ..
[소프티어] 업무처리 (파이썬)
문제 - 업무처리 (★★★☆☆) Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai - 업무 조직도는 완전 이진트리 모양이다. - 트리의 높이는 H, 말단에 대기하는 업무의 개수는 K, 업무가 진행되는 날짜 수는 R이다. - 각 업무는 번호가 있다. 아래는 H = 1, K = 3인 조직도이다. - 말단 직원들은 각각 K개의 순서가 정해진 업무를 가지고, 업무는 R일 동안 진행된다. - 말단 직원은 업무를 하나씩 처리해서 상사에게 올리고, 다른 직원들도 마찬가지이다. - 부하 직원에게 받은 업무는 다음 날에 처리하여 상사에게 올릴 수 있다. 즉, 당일 처리 X - 이 때, 홀수 번째 날에는 왼쪽 부하가 올린 업무를, 짝수 번째 날에는 오른쪽 부하가 올린 업무만을 처리할 수 ..
[스프링] 동시 요청 처리(멀티쓰레드)
앞선 포스팅에서 클라이언트가 싱글톤으로 관리되는 서블릿을 동시에 요청했을 때, 멀티쓰레드를 사용하여 이를 지원한다고 했었다. 멀티쓰레드가 뭔지, 어떻게 동시 요청을 처리하는지 간단히 알아보자. 멀티쓰레드 멀티쓰레드 이전에 쓰레드의 개념부터 살펴보자. 쓰레드란? 쓰레드란 프로그램(프로세스)실행의 단위이며 하나의 프로세스는 여러 개의 쓰레드로 구성이 가능하다 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며 실행 상태가 변할 때마다 문맥교환(Context Switching)을 수행한다 즉, 쓰레드는 프로그램 실행의 단위라고 생각하면 된다. 위 그림에서 서블릿 객체를 호출하는 것을 프로그램의 실행 단위인 쓰레드가 하..
[스프링] 서블릿(Servlet)과 서블릿 컨테이너(Servlet Container)
스프링으로 웹 개발을 하다 보면 서블릿이라는 단어를 자주 접하게 된다. 그만큼 중요한 개념이므로 웹 개발을 하기 위해 필수적으로 이해해야한다. 서블릿과 서블릿 컨테이너가 무엇인지 알아보자. 서블릿(Servlet)이란? 서블릿은 웹 프로그래밍에서 클라이언트 요청을 처리하고, 처리 결과를 클라이언트에 전송하는 기술이다. 쉽게 말해 자바를 사용하여 웹을 만들기 위해 필요한 기술이다. 이전 웹 프로그램들은 클라이언트의 요청에 대한 응답으로 정적인 페이지를 넘겨주었지만, 현재는 동적인 페이지를 가공하기 위해 웹 서버가 다른 곳에 도움을 요청한 후 가공된 페이지를 넘겨주게 된다. 이때 서블릿을 사용하게 되면 웹 페이지를 동적으로 생성하여 클라이언트에게 반환해 줄 수 있다. 서블릿의 특징 서블릿을 사용하게 되면, 1..
[스프링] 싱글톤과 @Configuration
스프링을 공부하다 보면 싱글톤이라는 말을 접하게 된다. 싱글톤이란 무엇인지, 스프링에서 싱글톤을 어떻게 적용하는지 알아보자 싱글톤이란? 싱글톤이란 디자인패턴 중 하나로, 객체의 인스턴스가 하나만 생성되는 패턴을 말한다. public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } public void say() { System.out.println("hi, there"); } } 위의 코드와 같이 외부에서 객체 ..
[스프링] 스프링 빈과 빈 등록 방법
스프링 빈이란? 스프링 빈이란 스프링 컨테이너에서 관리되는 자바 객체를 말한다. 일반적으로 우리가 new를 통해 생성하는 자바 객체와 달리 스프링 빈은 스프링 컨테이너에 의해 생성되고 관리되어지는 객체를 말한다. 스프링 컨테이너란? 스프링 컨테이너는 스프링 빈의 생명 주기를 관리, 즉 스프링 빈의 생성과 소멸을 관리하고, 생성된 빈을 빈 저장소에 등록하여 적절하게 사용할 수 있도록 빈을 관리해주는 컨테이너(공간)이다. 스프링 컨테이너는 스프링 빈에게 여러 기능을 제공하는데 대표적으로 의존관계 주입(DI)과 제어의 역전(IOC)이다. DI(의존관계 주입) 각 객체들은 다른 객체들과 의존관계를 가질 수 있다. 스프링 컨테이너는 이런 의존관계를 적절하게 주입해주는 역할을 한다. 스프링 빈 등록 정보를 통해 스..
[우아한 테크코스5기] 프리코스 2주차 회고
프리코스 2주차를 마치며 우아한 테크코스 1주차에서는 git, 커밋 컨벤션, 자바 문법을 익히며 학습하는 시간이었다. 1주차 회고록은 너무 바빴어서 작성하지 못했다. 2주차에서는 기능 별 메서드를 최대한 분리시키고, 테스트 도구를 사용하여 메서드 별 테스트를 작성, 검증하며 테스트에 익숙해지는 시간을 가졌다. 동시에 클린 코드 원칙을 지키기 위해서 많은 고민을 했던 시간이었다. 원칙을 지키기 위해 노력하면서 배웠던 점이 가장 많았기 때문에 원칙과 예제를 중점으로 글을 써보려 한다. 한 메서드에 오직 한 단계의 들여쓰기(indent)만 허용했는가? 2주차 미션에서는 indent = 2까지 허용하도록 되어있었지만, 객체지향 생활 체조의 규칙1을 보면 가독성, 재사용성, 쉬운 버그 판별을 위해 indent =..