개발

    Terraform의 init/plan/apply

    Terraform 이란? 하시코프에서 오픈소스로 개발 중인 인프라스트럭처 도구 IaC 도구라고도 하는데, 여기서 IaC란 Infrastructure as Code의 약자로 코드를 통해 인프라를 구축/운영할 수 있도록 만들어주는 도구라고 합니다. https://btcd.tistory.com/20 테라폼(Terraform)이란? - 개념, 장점, 관리툴 ※ 목차 ▶ IAC 가상화 기술의 발전 Iac 란 Iac 종류 ▶ Terraform Terraform 개념 Terraform 장점 Terraform 구성 사용관리 툴 들어가기전에.. IT산업에 종사하면서 도구의 사용법을 익히는 것도 중요하지만, 그 btcd.tistory.com Terraform init/plan/apply 회사에서 테라폼을 사용하고 있는데,..

    JsonParseException: Unrecognized token : was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false') - String과 JsonString을 구분합시다.

    JsonParseException: Unrecognized token : was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false') - String과 JsonString을 구분합시다.

    Dgs Graphql 의 DgsDataFetchingEvniroment로 "type"이라는 필드명의 Enum 타입인 쿼리 인자를 받아오던 중이었다. Any 타입으로 들어오게 되며 이를 String 타입으로 형변환 시키려고 했다. val type = environment.parseRequest("type", String::class.java) 위의 parseRequest메소드 내부에는 아래 로직을 구현시켜 놓았다. ObjectMapper를 이용하였고 type 필드가 String 타입에 속하는것을 사전에 디버깅하여 확인했기 때문에 아래 로직을 탈 것이라고 생각했다. val mapper = getObjectMapper(strategy) return when (this) { is String -> mapper...

    GraphQL 라이브러리 비교(kickstart/netflix-dgs/graphql-kotlin)

    GraphQL이란 페이스북에서 만든 API용 쿼리 언어 sql과 graphql의 차이점 sql: 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적, 쿼리를 주로 벡엔드 시스템에서 작성하고 호출 grpahql: 웹 클라이언트가 서버로부터 데이터를 효율적으로 가져오는 것이 목적, 쿼리를 주로 클라이언트 시스템에서 작성하고 호출 특징 쿼리언어이다 보니 스키마 작성이 필요하다. (클라이언트와 서버간 스펙 정의) Restful API에서 발생하는 under-fetching, over-fetching 이슈를 해결할 수 있다. Java 진영의 GraphQL Library Java/Kotlin 진영에서 사용 가능한 GraphQL 라이브러리는 여러가지가 있다.(Spring For GraphQL, Mic..

    Spring Boot 배포 WAR 에서 JAR 로 변경하기                                               (Spring Boot Embedded Tomcat 사용하기)

    Spring Boot 배포 WAR 에서 JAR 로 변경하기 (Spring Boot Embedded Tomcat 사용하기)

    Spring Boot Embedded Tomcat Spring Boot 프로젝트를 WAR 파일로 빌드하면 Tomcat과 같은 외장 WAS에 배포해야 실행이 가능하다. 그런데 Spring Boot에는 내부적으로 Tomcat이나 Undertow와 같은 서버가 내장되어 있어, 애플리케이션을 JAR 파일로 빌드하고 실행하는 것만으로도 웹 애플리케이션을 서비스할 수 있다. Spring Boot 배포 방법 WAR에서 JAR로 변경하기 기존에 WAR 파일로 빌드되던 Spring Boot 프로젝트를 JAR 파일로 빌드되도록 변경하려고 한다. 1. WAR 플러그인 및 의존 구성 제거 기존에 WAR 파일로 빌드하는 프로젝트였다면 Java 플러그인의 디폴트인 JAR 파일 생성을 비활성화시키고 WAR 테스크를 기본 동작으로 ..

    [디자인 패턴] SOLID 원칙

    컴퓨터 프로그래밍에서 SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다. SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. SOLID의 다섯 가지 원칙을 살펴보자. SOLID 원칙 단일 책임 원칙(SRP: Single Responsibility Principle) 개방-폐쇄 원칙(OCP: Open-Closed Principle) 리스코프 치환 원칙(L..

    Java의 volatile 키워드

    Java의 volatile 키워드

    ※ 이 글은 블로그 주인 본인의 volatile 공부를 위해 Jakob Jenkov 님의 Java Volatile Keyword 글을 번역해본 글입니다. Java의 volatile 키워드는 Java 변수를 "메인 메모리에 저장 중"으로 표시하기 위해 사용된다. 더 정확히 말하자면 휘발성 변수의 모든 읽기는 CPU 캐시가 아닌 컴퓨터의 메인 메모리에서 읽혀지며 휘발성 변수에 대한 모든 쓰기도 CPU 캐시뿐만 아니라 메인 메모리에 기록된다. 사실, Java 5 이후로 volatile 키워드는 단순히 휘발성 변수가 메인 메모리에 기록되고 읽히는 것 그 이상을 보장한다. 이것은 뒤에 이어지는 섹션에서 확인해보자. 변수의 가시성 문제 Java volatile 키워드를 사용하면 쓰레드에 걸쳐 변수의 변경사항을 확인..