Loading...
2020. 4. 6. 13:41

[Algorithm] - 2019 Kakao Winter internship Coding test 문제 풀이

2년 전부터 계속, 시간이 날 때마다(그 시간이 얼마 되지 않지만..) 틈틈이 알고리즘 문제 풀이를 계속 이어가고 있었습니다. 다양한 문제들을 보았고, 어려운 문제, 생각이 날 것 같으면서도 뇌정지가 오는 문제, 쉽게 풀만한 문제들 다양한 문제들이 존재하였습니다. 그러던 중, 작년 겨울에 재미삼아 카카오 코딩 테스트 문제를 풀게 되었습니다. 문제 난이도는 생각한 것보다는 조금 어려운 수준에 해당했으며 어차피 코딩 테스트에서 좋은 성적을 거두지 못했더라도 차후에 문제 풀이 해설이 올라오기 때문에 가벼운 마음으로 시험에 임했습니다. 하지만 몇 달이 지나도 해당 코딩테스트에 대한 문제 풀이 해설은 보이지 않았고, 그 해설을 최근에서야 발견하게 되었습니다. (그것도 Google 검색이 친절하게 이것이 있다는 걸..

2020. 3. 28. 20:31

[Spring Cloud] - 7. Hystrix를 이용한 Circuit Breaker (기본편)

지난 포스트에 이어서 Spring Cloud에서 Circuit Breaker를 구현할 수 있는 첫 번째 파트를 들어가보도록 하겠습니다. Hystrix Hystrix는 Spring Cloud 스택에서 제공하는 Circuit Breaker 중 하나입니다. Netflix에서 개발했으며 현재는 Spring Cloud의 표준 Circuit Breaker로 자리 잡고 있죠. 기본적으로 Hystrix는 위와 같은 형태로 동작합니다. 브라우저 혹은 모바일에서 어떤 API 요청이 들어왔을 경우, 해당 서비스의 엔드포인트가 호출되는데, 이 때 서비스에 오류가 발생했거나 응답이 없을 경우, 이후 이용자에게 장애가 전파되지 않고, 미리 정의된 오류를 브라우저 혹은 모바일에서 전송하게 되어 오류 전파를 막아주게 됩니다. 그러면..

2020. 2. 8. 22:31

[Spring Cloud] - 6. Eureka를 이용한 서비스 검색

MSA로 설계된 웹 애플리케이션은 그 인스턴스가 서비스별로 나누어져 있고, 만약 이를 로드 밸런싱을 이용해 여러 서비스를 분산 처리하게 된다면, 서로 다른 인스턴스가 여러 개 생기게 되며, 그렇게 되면 API 요청마다 적절한 인스턴스의 Endpoint를 매겨줘야 합니다. Service Discovery는 이러한 문제를 해결하고자, Server-Client 방식과 유사한 Self-Registration Pattern을 이용해 자신의 서비스를 중앙의 Registry에 등록하고, 이를 요청할 때마다 알맞는 Endpoint를 매칭해준다는 것을 알았습니다. Eureka Spring Cloud 스택에서 이러한 역할을 하는 대표적인 모듈로 Eureka가 있습니다. Eureka는 Netflix OSS 중 하나로 Spr..

2020. 1. 22. 17:53

[Spring Cloud] - 5. Zuul Gateway를 이용한 Filtering

이번 포스트에서는 Routing에 이어서 Zuul Gateway를 이용한 Filtering에 대해서 이야기해보도록 하겠습니다. Filtering Spring Boot에서 필터링을 사용하는 경우는 PreFilter와 같은 엔드포인트의 보안 등에서 사용됩니다. 이 필터링을 이용하기 위해서는 Spring Security에서 제공하는 JWT 등의 보안 수단을 사용하여 인증을 받고, 엔드포인트에 접근하는 방식이죠. Zuul Gateway에서도 엔드포인트의 보안을 적용할 수 있는 필터링 기능을 제공합니다. 위 아키텍처는 Zuul Gateway의 코어를 그린 아키텍처입니다. Zuul Servlet을 통해 들어오는 요청을 Routing 하게 되는데요. 그리고, 그 밑단에는 ZuulFilter Runner가 있어서 엔드..

2020. 1. 17. 18:55

[Spring Cloud] - 4. Zuul Gateway를 이용한 Routing

지난 MSA 포스트에 이어, 이번 포스트에서는 Spring Cloud에서 API Gateway를 구현해보겠습니다. https://blog.neonkid.xyz/205 [MSA] - 2. API Gateway가 필요한 이유 안녕하세요. 이번 글은 MSA에 대한 글을 이어서 API Gateway에 대한 이야기를 하고자 합니다. 지난 MSA 글에서는 MSA를 왜 써야하는지, 어떨 때 필요하고, 무슨 장단점이 있는지를 간략하게 설명해보는 아주 쉬운.. blog.neonkid.xyz 혹시 지난 글을 읽어보시지 못했다면, 위 링크를 통해서 API Gateway가 MSA에서 왜 필요한지, 알아보시고 가신다면, 이 포스트를 이해하는 데 도움이 될 것이라고 생각합니다. Gateway for Spring Cloud Spr..

[Java] - Java Stream API

Java 언어가 벌써 11 버전이 나오고 있네요. Java는 역사가 깊고, 오래된 언어이자 비난도 많이 받은 언어입니다. 그렇지만 아직도 많은 곳에서 사용되고 있고, 대체하는 곳도 있습니다. 오늘은 Java 8에서 등장한 Stream에 대해 이야기해보고자 합니다. Stream API Stream ? 혹시 그거, Buffer 보다 속도가 겁나 빠른 그 Stream ? 네, 그건 아닙니다. Java에서 Stream은 함수형 프로그래밍을 구현하기 위한 기술 중 하나로, Java 8에서 새로이 등장하였습니다. Java 8 이전에는 배열이나 Collections의 자료 구조 인스턴스를 다루기 위해 for 문이나 foreach 문을 사용하여 요소를 하나씩 꺼내었지요. 간단한 알고리즘을 짜는 것이라면, 큰 상관이 없..

2019. 12. 29. 13:47

[Spring Cloud] - 3. API 서버로 설정 값 불러오기

지난 포스트에서는 Configuration Server를 설정하는 두 가지 방법을 알아봤습니다. 첫 번째 방법은 로컬의 저장되어 있는 설정 파일을 가져오는 방법이었고, 두 번쨰 방법은 Github 등의 레포지터리에 있는 파일을 가져오는 방법이었습니다. 우리는 이러한 서버가 제대로 구축되어 있는지 확인하기 위해서 REST API를 직접 호출하여 해당 값을 반환하는 방법으로 테스트를 했었는데요. 하지만 이러한 결과를 보고, 어떻게 API 서버가 이러한 값을 받는지에 대해서는 아마 궁금해 하셨을 것이라 생각합니다. 그래서 이번 포스트에서는 직접 비즈니스 로직을 만들고, 해당 서버에 맞는 설정값을 만들어, 가져오는 방법을 알아보도록 하겠습니다. 먼저 API 서버를 만들어보도록 하죠. 새로운 Spring Boot..

2019. 12. 26. 13:26

[Spring Cloud] - 2. Github and Configuration Server

안녕하세요. 지난 시간에는 Spring Cloud의 Configuration Server를 로컬 환경의 설정 파일을 통하서 구성하는 방법에 대해 알아봤습니다. 로컬 내에 있는 설정 파일을 직접 작성하여 이를 Pull 방식으로 이용할 수 있도록 별도의 구성 서버를 작성하는 것은 매우 효율적으로 서버의 구성 설정을 변경하고 새로이 작성하는 데 용이합니다. 그런데, 여기에 Git을 추가한다면 어떨까요? 기존의 설정에서 새로운 설정으로 변경한 뒤, 어떠한 문제점이 생겼다거나 이슈가 발생된다면 롤백을 하여야 합니다. 하지만 파일 시스템에서 롤백을 할 수 있는 것은 Volume Shadow Copy 정도나 혹은 RAID 레벨에서 제공하는 Snapshot, BRTFS에서 제공하는 Snapshot일 것입니다. 하지만 ..

2019. 12. 22. 12:39

[Spring Cloud] - 1. Configuration Server 구성

지난 글에서 MSA(Micro Service Architecture)에 대한 기본적인 내용에 대해서 알아봤었는데요. 혹시라도 이 글을 읽어보지 못했다면, 아래의 링크를 통해서 직접 읽어보실 수 있습니다. MSA (Micro Service Architecture) 란 무엇일까? 안녕하세요. 오늘은 Micro Service Architecture에 대해 이야기 해보고자 합니다. 한동안 MSA가 굉장히 화두였는데, 요즘은 분위기가 식어지는 듯하여 오늘 블로그에 이 글을 적게 되었습니다. 우리는 백엔드 개발.. blog.neonkid.xyz 이번 파트에서는 Java 언어의 웹 개발 프레임워크인 Spring을 이용해서 이 Micro Service Architecture를 구성하는 시간을 가져보도록 하겠습니다. 그..

[GP] Spring boot에서 REST API 개발 시작해보기

이 글은 N.K Dev Lab에서 작성된 글입니다. 안녕하세요. N.K Dev Lab에 글을 안쓴지가 정말 오래되었네요. 올해는 저의 취업 시즌인 만큼 블로그에 글을 쓰는 것에 많이 소홀했었습니다. 더욱이 Dev Lab 리뉴얼과 관련하여 여러 일들이 있었는데, 저의 Dev Lab이 다시 Jekyll로 돌아오게 되었습니다. 이유는 여러가지가 있지만 이제 제가 취업을 하게 되면 현재 하고 있는 일들을 조금 미리 간소화 하는 작업이라고 보시면 될 것 같습니다. 한 가지 예를 들어, 이제 Dev Lab에 올리는 글은 저의 손에 의해 수동으로 NKLAB(Tistory)에 게시되지 않고 자동화 된 코드에 의해서 올라가게 되는 작업 등 Hugo 보다는 Jekyll이 좀 더 편하더군요. 본론으로 넘어가서, 오늘은 Sp..