전체 글 101

윈도우에서 Apache Kafka 개발 환경 만들기

윈도우에서 개발 테스트를 위한 Apache Kafka 개발 환경 구축을 설명합니다. (윈도우 용이지만, Mac 및 Linux 에서도 동일하게 설정 가능합니다.) 이 포스팅은 카프카 버전 2.1.2 버전을 기준으로 만들어 졌습니다. 1. KAFKA 다운로드 및 설치 다음의 웹 사이트에서 카프카 버전 2.1.2를 다운 받도록 합니다. https://archive.apache.org/dist/kafka/2.1.1/kafka_2.12-2.1.1.tgz 원하는 위치에 압축을 풀어 놓도록 합니다. 편의상 카프카가 설치된 홈디렉토리는 %KAFKA_HOME%으로 하겠습니다. - 제 경우 c:\kafka_2.12-2.1.1에 압축을 풀어 두었습니다. 2. 환경 설정 zookeeper를 위한 temporary디렉토리를 만..

Java GC 알고리즘 및 주요 옵션

GC(Garbage Collection)와 전제 조건 사용하지 않는 메모리를 자동으로 회수하여 가용한 공간을 만드는 작업 GC 전담 thread가 별도로 존재하여 메모리가 부족하다고 판단되는 시점에 주기적으로 일어남 이러한 GC는 다음의 전제 조건 (weak generational hypothesis)이 있음 대부분의 객체는 금방 접근 불가 상태(unreachable)가 됨 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재함 GC를 진행하는 주체를 Garbage Collector(가비지 컬렉터)라 하고 가비지 컬렉터는 애플리케이션의 할당된 동적 메모리를 자동으로 관리하는 주체로서 다음의 동작들을 통해 동적 메모리 관리를 자동으로 수행 메모리를 운영체제에 할당하고 반환 요청 시에 메모리를 애플리케이션에..

Middleware/Tuning 2021.07.28

Java Heap 메모리 옵션

JVM의 메모리 영역은 Runtime Data Areas내에 그 기능에 따라 5가지 영역으로 나뉘어 있는데 그 중에서도 new 키워드를 통해 객체를 생성하고 모든 개체와 해당 인스턴스 변수 및 배열이 저장되는 영역을 Heap 영역이라 한다. 또한 이 Heap 영역은 다시 그 기능에 따라 Eden, Servivor0, Servivor1, Old, Permenant 등으로 그 영역이 세분화 되며 이 Heap 영역에서 참조하는 변수나 필드가 존재하지 않으면 GC의 대상이 된다. 이러한 GC는 Minor GC와 Major GC로 나뉜다. Minor GC : New 영역에서 일어나는 GC 최초에 객체가 생성되면 Eden영역에 생성된다. Eden영역에 객체가 가득차게 되면 첫 번째 GC가 일어난다. survivor..

Middleware/Tuning 2021.07.26

미들웨어(Middleware) 란?

미들웨어(Middleware) 란? 미들웨어는 운영 체제와 해당 운영 체제에서 실행되는 응용 프로그램 사이에 존재하는 소프트웨어 기본적으로 숨겨진 변환 계층으로 기능하는 미들웨어는 분산 응용 프로그램의 통신 및 데이터 관리를 가능하게 함 데이터와 데이터베이스사이를 "파이프" 로 연결하기 때문에 배관이라고도 함 미들웨어를 사용해 사용자가 웹 브라우저에서 양식을 제출하거나 웹 서버가 사용자의 프로필을 기반으로 동적 웹 페이지를 반환하도록 요청할 수도 있음 통신 방식에 의한 미들웨어 분류 사용하는 통신 방식에 의해 미들웨어를 분류한다면 다음과 같이 분류 할 수 있음 RPC (Remote Process Call) 별도의 원격 제어를 위한 코딩 없이 원격지에 있는 함수나 프로시저를 실행 할 수 있게 하는 프로세스..

Middleware 2021.07.21

REST API 설계 가이드

정의 및 특징 • REST(REpresentational State Transfer)란 ‘자원(Resource)을 의미(Representation)로 구분하여 그 상태를 전달’ 하는 것을 뜻함 • 즉, HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미 • REST라는 단어는 Roy Fielding이 2000년 캘리포니아 대학교 어바인 캠퍼스의 박사논문으로 제출한 'Architectural Styles and the Design of Network-based Software Architectures'에서 처음으..

Swagger UI 사용법

정의 Swagger UI란 Swagger 제품군 중 API Documentation과 관련된 기능을 제공하는 제품이다. Swagger 홈페이지에 등록된 Swagger UI에 대한 설명은 다음과 같다. Swagger UI allows anyone — be it your development team or your end consumers — to visualize and interact with the API’s resources without having any of the implementation logic in place. It’s automatically generated from your OpenAPI (formerly known as Swagger) Specification, with the ..

Spring Boot AutoConfiguration

서두 Spring Framework를 쓰다 Spring Boot를 접하게 되면 환경 설정과 관련 몇 가지 벽에 맞닥뜨리게 됩니다. Spring Framework을 쓸 때 그렇게 많이 사용하던 xml이 더 이상 쓰이지 않기 때문인데요, 그렇다 치더라도 환경 설정을 담당하던 annotation이 어떻게 동작하는지 감을 잡기 어렵습니다. ​ 이번 포스팅에서는 Spring Boot의 이러한 환경 설정에 대해 알아 보고자 합니다. Spring Boot는 다음의 여섯 가지 annotation을 @SpringBootApplication이라는 하나의 annotation으로 대체하고 있습니다. @Tareg(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documente..

Spring Initializr

개요 Spring Boot 기반 프로젝트를 생성하기 위한 라이브러리, API, 프레임워크 등을 자동 생성해 주는 기능 Mave, Gradle 지원 Java, Groovy, Kotlin 지원 Dependency 최소화(*-starter 라이브러리 dependency 추가시) STS(Eclipse) 나 IntelliJ를 통해 빠른 임포트 http://start.spring.io에서 필요한 라이브러리 검색을 통해 프로젝트 자동 생성. 혹은 https://github.com/spring-io/initializr 를 통해 커스텀 start 페이지 구성 가능 Hands-on http://start.spring.io 접속하여 다음 정보로 프로젝트를 생성한 후 다운로드를 받는다. Project : Gradle Proj..

Spring Boot 란?

정의 Spring Boot는 Spring 기반으로 만들어진 독립 실행형 응용 프로그램이다. Spring 및 Spring Boot를 개발, 발전, 관리하는 Spring 공식 홈페이지에는 Spring Boot에 대해 다음과 같이 정의 하고 있다. Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applicati..

Gradle proxy 설정

기업환경에서 gradle을 사용하다 보면 proxy 서버 문제로 아래와 같은 에러를 볼 때가 있습니다. 다음과 같은 proxy 설정 정보 값을 작성해 gradle.properties 라는 파일로 저장하시기 바랍니다. 1. Proxy가 HTTP 방식일 때 systemProp.http.proxyHost=your proxy host info systemProp.http.proxyPort=your proxy host port info systemProp.http.proxyUser=[userid] systemProp.http.proxyPassword=[password] systemProp.http.nonProxyHosts=[*.exclusiveurl.com|localhost] 2. Proxy가 HTTPS 방식일 ..

Gradle init type 알아보기

Gradle 프로젝트 디렉토리를 생성한 다음 gradle init [--type [타입명]] 명령어를 수행해 gradle 프로젝트에 필요한 초기 파일 및 디렉토리들의 초기 설정을 합니다. gradle init 다음에 입력되는 타입은 ①basic ②java application ③java library(jar 파일) ④groovy-library ⑤scala-library ⑥pom이 존재하며 각각은 다음과 같습니다. 1. basic gradle init으로 입력 했을때 적용되는 기본 타입입니다. 모든 타입의 기본이며 구체적인 빌드파일, 디렉토리등이 기술되지 않습니다. build.gradle과 settings.gradle 만 생성됩니다. 2. java-application gradle init --type j..

Gradle, Github, Eclipse 그리고 Web Application 연동

github에 등록된 그래들(Gradle) java-application(이하 java-library type도 동일) 프로젝트를 이클립스로 import해 활용하는 방법에 대해 알아 보겠습니다. 그래들(Gradle)로 java-application type의 프로젝트를 생성하는 방법은 링크된 인터넷을 확인 하시기 바라겠습니다. 또한 생성된 프로젝트를 github에 등록하는 방법도 링크된 인터넷을 통해 확인 하시기 바라겠습니다. 여기에서는 github에 등록되어 있는 그래들(Gradle)기반의 java-application 프로젝트를 PC의 gradle repository로 복제(clone )해서 이클립스에서 import 하는 방법을 알아 보도록 합니다. 따라서 테스트를 할 gradle 기반의 github..

Gradle 간단 Application 빌드

그래들(Gradle)은 프로젝트를 생성할 때 지정하는 type을 통해 어플리케이션의 종류를 지정할 수 있습니다. 이번에는 Gradle을 이용해 Web 어플리케이션을 어떻게 만들고 빌드 할 수 있는지 알아봅니다. 특히 Gradle을 이용한 Web 어플리케이션 개발을 위한 방법은 여러가지가 있을 수 있으나 여기에서는 초경량 Servlet Container인 Jetty 서버(gradle에서는 'gretty' plugin으로 관련 파일을 실행) 와 Gradle의 war plugin을 이용해 개발 배포 하는 방법을 알아보도록 하겠습니다. 1. 프로젝트 만들기 Web 어플리케이션 역시 init의 type 파라미터는 java-pplication으로 지정하면 됩니다. 테스트를 위해 콘솔을 열어 아래와 같이 프로젝트를 ..

Gradle의 buildscript, repository, jcenter 그리고 dependencies

1. buildscript 그래들(Gradle)에서 buildscript는 보통 별도의 외부 라이브러리를 가져와야 할 때 사용합니다. 즉, 심플한(외부 라이브러리가 필요 없는) 라이브 사용 시에는 별도로 작성할 필요가 없습니다. buildscript는 repository와 dependencies로 구성됩니다. 2. repository 그래들(Gradle)에서 repository란 build.gradle이 들어있는 프로젝트에서 사용하는 라이브러리의 위치를 지정합니다. 가장 흔하게 사용하는 것은 jcenter(), mavenCentral(), google() 등이 있습니다. 모두 인터넷에 있는 공개용 라이브러리 저장소입니다. 3. dependencies repository에서 jcenter, mavenCen..

Gradle task의 초간단 이해

Gradle의 task는 Gradle 프로젝트의 작업 단위 입니다. 실행 시 콘솔상에서 gradle [task명]으로 실행을 하면 됩니다. 이러한 task는 groovy 언어로 작성되어 지며 Gradle 내부에 미리 만들어져 있는 내장의 task들과 build.gradle 파일에 사용자가 정의해 사용하는 사용자 정의 task 두종류가 존재합니다. 내장된 task는 콘솔상에서 gradle tasks 명령어를 실행해 확인해 볼 수 있습니다. 콘솔 상에서 gradle 다음에 입력했던 모든 파라미터가 사실은 내장된 task였다는 것을 확인해 볼 수 있을 겁니다. (init, jar, clean, run …) 앞서 설명했듯이 gradle의 task의 모든 문법을 익히는 것은 결국 groovy 문법을 익히는 것과 ..

윈도우에 Gradle설치와 간단 Sample실행

1. Gradle이란? Gradle이란 그래들 재단과 그래들웨어라는 단체에 의해 2009년부터 개발된 빌드 도구(Build Tool)입니다. Groovy로 개발 되었으며 Java개발자들에게 익숙한 Maven에 해당되는 도구입니다. 구글의 안드로이드 사용자를 중심으로 최근 사용자가 많아지고 있는 추세입니다. 과거 Java 초창기에 가장 유명했던 빌드 도구는 Ant 였으나 Ant가 배우고 쉽고 사용하기 쉬운 반면 라이브러리 레파지토리 관리 기능이 없어 Maven이 그 자리를 대체 했었습니다. 그러나 최근엔 Maven 역시 XML 기반으로 작동되어 설치, 설정 등의 절차가 까다로워 점점 더 많은 사용자들이 Gradle로 옮겨가고 있는 추세 입니다. 사실 일반 개발자들이 Gradle에 관심을 가지게 된 가장 큰..

자주쓰는 Git 명령어

대부분의 경우 Git 명령어는 아래의 명령어만 알면 됩니다. 원격지 git에서 전체 소스 가져오기 1. workspace 및 Project 폴더 만들기 2. project 폴더에서 git init 3. git remote add origin http://..../xxx.git 4. git pull origin master 원격지 커밋할때 1. global config 설정 - git config --global user.name "Euideok Lee" - git config --global user.email "euideok.lee@example.com" 2. git add [파일명/ . ] 3. git commit -m "message" 4. push -u origin master 많이 쓰는 명령어 ..

Git for windows Proxy설정(GitBash)

윈도우 환경에서 Git Repository 구성을 위해 사용되는 Git for Windows(GitBash)는 윈도우의 Proxy 설정을 따르지 않고 자체 환경 파일에 Proxy 정보를 기입해 주어야 합니다. Git for Windows 레파지토리가 설치된 디렉토리에서 숨긴 속성으로 저장된 .git 폴더를 찾아 들어가면 config란 파일을 찾을 수 있습니다. config 파일을 메모장이나 Notepad++ 등의 텍스트 에디터를 통해 오픈해 아래와 같이 proxy에 관련된 정보를 추가하도록 합니다. 수정이 완료되면 정상적인 작동을 확인 하실 수 있을 겁니다. 감사합니다.

윈도우에서 Git과 github을 사용해 보기

GIt은 리누스 토발즈에 의해 개발된 분산형 파일 버전 관리 시스템을 말함 GitHub는 Git을 웹호스팅을 통해 관리할 수 있게 해주는 무료 웹사이트 gitbash를 통해 윈도우 환경에 git을 사용할 수 있는 환경 구성 가능 1. PC의 윈도우 Git 레파지토리 구축을 위해 GitBash 설치(https://gitforwindows.org) 윈도우에 Linux/Unix의 Bash Shell 기반 Command Line 명령어 입력 환경을 제공 Git Command 지원 GUI기반 레파지토리 관리 툴 제공 2. GitHub에 New Repository 생성 https://github.com 회원가입 신규 레포지토리 생성 3) GitHub 레파지토리 옵션 설정 Repository Name: 사용할 레파지..

반응형