분류 전체보기
-
브라우저에 주소를 적으면 일어나는 일Web, Server, Cloud 2022. 6. 20. 14:01
기본적인 내용 Local cache를 검색해서 매핑된 ip가 있는지 찾는다. hosts 파일을 검색해서 매핑된 ip가 있는지 찾는다. DNS Hierarchy* 를 검색해서 매핑된 ip가 있는지 찾는다. 1, 2, 3 과정 중 하나로 domain name에 매핑된 ip를 획득한다. 해당 ip로 TCP 연결을 맺는다. TCP 연결 하에서 HTTP request를 보낸다. HTTP response를 받는다. * 참고 : DNS Hierarchy GSLB GSLB (Global Server Load Balance) Load Balance라는 이름과는 조금 다르게, GSLB는 일반적으로 생각하는 로드밸런싱과는 차이가 있다. GSLB는 전통적인 DNS와 같이 동작하며 추가적으로 health check와 activ..
-
Spring Bean 스코프Java, Kotlin, Spring 2022. 6. 19. 17:25
Bean 의 스코프 Singleton 하나의 Bean 정의에 대해서 Spring IOC Container 내에 단 하나의 객체만 존재한다. Prototype 하나의 Bean 정의에 대해서 다수의 객체가 존재할 수 있다. Request 하나의 Bean 정의에 대해서 하나의 HTTP request의 생명주기 안에 단 하나의 객체만 존재한다. 즉, 각각의 HTTP request는 자신만의 객체를 가진다. Web-aware Spring ApplicationContext 안에서만 유효하다. Session 하나의 Bean 정의에 대해서 하나의 HTTP Session의 생명주기 안에 단 하나의 객체만 존재한다. Web-aware Spring ApplicationContext 안에서만 유효하다. Global sessi..
-
ubuntu 20.4 mongodb 설치Web, Server, Cloud 2022. 6. 17. 19:31
ubuntu 20.4 버전에 mongodb 특정 버전을 설치해야 할 일이 있다. mongodb 4.2 버전을 설치하고자 한다. 더보기 💡 MongoDB 4.2 Community Edition supports the following 64-bit Ubuntu LTS (long-term support) releases on x86_64 architecture: 18.04 (“Bionic”) LTS 16.04 (”Xenial”) LTS 공식 문서에는 MongoDB 4.2 커뮤니티 에디션은 ubuntu 18.04 LTS, ubuntu 16.04 를 지원한다고 써있긴 하지만, ubuntu 20.4 버전도 설치는 되었다. 이후 별다른 문제가 없을 지는.. 확신이 들지 않는다. 테스트 용도로 사용할 것이기에, 일단 ..
-
gcloud 브라우저 없이 로그인 하기Web, Server, Cloud 2022. 6. 17. 12:20
ubuntu 에서 browser 없이 gcloud 로그인 하기 ubuntu 서버에서 브라우저 실행 없이 gcloud 로 로그인을 하기 위한 절차를 알아보자. 공식문서는 이 곳이다. 만약 브라우저가 실행 가능한 환경이라면 아래 명령어를 실행하면 된다. $ gcloud auth login // 혹은 $ gcloud auth login 그러나 브라우저를 실행할 수 없는 ubuntu 서버에 ssh 로 연결한 환경의 경우에는 특이한 방식을 사용해야 한다. 개인적으로 방법 자체가 낯설어서 이해하기 위해 시간이 좀 걸렸다. 브라우저를 실행할 수 없는 환경에서 --no-browser 옵션으로 로그인을 시도한다. $ gcloud auth login --no-browser 그러면 다음과 같은 안내 메세지를 콘솔에 출력해준..
-
Java 8 주요 업그레이드 사항Java, Kotlin, Spring 2022. 5. 25. 09:27
Java 8 람다식 (Lambda expressions) 람다식은 자바에서 함수를 일급 객체로 활용하기 위해 새로 추가된 표현식이다. 기존에는 함수를 다른 함수의 매개변수로 전달하기 위해서는 익명 클래스가 필요했다. Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } } 람다식은 불필요한 익명 클래스를 없에고 간단한 함수 표현식으로 함수의 일급 객체화를 가능하게 해준다. Comparator byWeight = (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()..
-
JVM 메모리 구조Java, Kotlin, Spring 2022. 5. 20. 09:47
JVM 구조 Java 애플리케이션이 JVM 위에서 어떻게 동작하는지 알아보자. 첫번째 과정은 컴파일 Java 소스코드는 먼저 컴파일되어야 한다. 만약 기본적인 Java 애플리케이션을 구현했다면 코드를 실행하기 위해서 먼저 컴파일 과정을 거쳐야 한다. $ javac application.java 컴파일이 완료되면 application.class 라는 파일이 생성된다. .class 확장자를 가진 파일은 Byte Code 파일로 컴퓨터가 해석할 수 있는 기계어에서 조금 더 추상화된 언어 파일이라고 생각하면 된다. 바이트코드 위키 클래스 로더가 하는 일 컴파일이 완료된 .class 파일은 JVM 위에 존재하는 클래스 로더로 전달된다. 클래스 로더는 .class 파일을 해석하여 프로그램 내 선언된 자료구조들을 메..
-
@SpringBootApplication 어노테이션Java, Kotlin, Spring 2022. 5. 20. 08:48
@SpringBootApplication SpringBoot 프로젝트를 시작하면 @SpringBootApplication 어노테이션이 기본으로 설정되어 있다. @Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters={@ComponentScan.Filter(type=CUSTOM,classes=TypeExcludeFilter.class),}) public @interface SpringBootApplication @SpringBootApplication 은 그 안에 @EnableAutoConfigur..
-
Java Compile 과정Java, Kotlin, Spring 2022. 5. 7. 09:57
JVM (Java Virtual Machine) 자바는 JVM(Java Virtual Machine) 위에서 동작하기 때문에, OS 에 비종속적이다. JVM 은 자바에 대해서 모른다. 컴파일된 바이트 코드 파일을 해석하는 능력을 가지고 있을 뿐 이다. 따라서, JVM 이 해석할 수 있는 형태의 바이트 코드를 JVM 에 제공한다면, 꼭 자바가 아니더라도 JVM 을 사용할 수 있다. Kotlin 이 대표적이다. Java Compile 과정 자바언어로 소스코드 (.java) 를 작성한다. Java Compiler 가 자바 소스파일을 컴파일 한다. 이 때 JVM 이 해석할 수 있는 형태의 파일인 바이트 코드 파일 (.class) 이 생성된다. 바이트 코드의 각 명령어는 1 바이트 크기의 Opcode 와 추가 피..