기본 콘텐츠로 건너뛰기

[간단번역] Top 20 REST and Spring MVC Interview Questions for Java Developers - Javin Paul

Javin Paul( LinkedIn , Javarevisited , JAVA67 )은 프로그래머면서 블로거인데, 자바나 스프링과 관련돼서 저도 가끔 들어가는 블로그의 주인장입니다. 특히 저 JAVA67 사이트는 자바와 관련된 기술적인 다양한 글들이 있어서 몇 번 도움을 받았던 부분이 있었습니다. 이번에 Javin Paul이 Top 20 REST and Spring MVC Interview Questions for Java Developers라는 제목으로 DZone에 글이 하나 올라왔는데 꽤 간단히 정리를 잘했더군요. 초보 개발자나 중급 개발자 정도의 레벨에서 주로 할만한 질문들을 정리해 놓은 글들인데, 일단 제가 볼 때는 3년 이하의 개발자들이 한 번쯤 정리하고 지나간다 생각하고 볼만한 글로 보입니다. 진짜 못하는 영어이지만 간단히 번역해서 소개해 봅니다. 번역은 그냥 반말 대화체로 진행합니다. 말투나 의역이 거슬리더라도 이해 바랍니다. 20개의 질문이라더니 실제로는 22개네요. 정말 번역하시는 분들 존경합니다. 이리 힘든 일을... 원문 :  Top 20 REST and Spring MVC Interview Questions for Java Developers - Javin Paul (DZone) 안녕 친구들! 최근 몇 개월 동안 그리고 오늘까지 REST와 Spring 강좌를 나눠왔는데, 자바 웹 개발자를 지원했을 때 자주 받게 되는 Spring MVC와 REST에 대한 질문들을 나눠볼까 해. 자바 웹 프로그램과 RESTful Web Service를 개발하면서 Springframework는 가장 보편적이고 표준적인 프레임워크이기 때문에, Senior 자바 개발자에게는 Spring Core와 Spring MVC에 대한 충분한 지식이 필요해. 그러나 작업 명세에 REST와 Web Service가 명시되어있다면, 스프링을 이용해서 RESTful web service를 어떻게 개발할 것인가 하는 것도 알아야 해. Spring 3.1 이...

Pivotal이 Knative에서 구글과 힘을 합쳤다고 합니다.

며칠 된 소식으로 보이는군요. Pivotal이 Knative에서 구글과 힘을 합쳤다고 합니다. Knative는 구글이 Google Cloud Service에서 Kubernetes + Istio를 발전시켜서 Serverless 생태계에 좀 더 나은 솔루션을 제공하려고 만든 프로젝트라고 합니다. ( Knative 프로젝트 메인 페이지 , Knative Github ) Kubernetes와 Istio는 Cloud Service에 관심 있으신 분들은 잘 아시는 내용일 텐데요. 전 Istio는 이번에 처음 봤습니다. 찾아보니 Google, IBM, Lyft가 기여하고 있는 오픈소스 Service Mesh 구현체라고 합니다. 즉, 서비스 간의 통신을 추상화하고 거기에 Service discovery, Load balancing, Dynamic Request Routing, Circuit breaking, Retry and timeout, Distributed tracing 등등을 지원하는 서비스를 Service Mesh Service라고 하는데, 이것의 구현체 중 하나가 Istio라고 보시면 될 것 같습니다. (자세한 내용은 Cloud Labs Tech의 글을 참고 ) Spring Cloud에는 이미 Spring Cloud Neflix 프로젝트에 의해서 대부분 포함이 되어있는 기능이 아니냐고 생각하실 텐데요. 이 기능을 스프링 프로젝트에 설정하지 않고 Kubernetes + Istio 에서 지원을 한다는 뭐 그런 내용이지요. 아무튼 이 프로젝트에 그동안 Pivotal의 엔지니어들이 풀타임으로 지원을 했다고 하네요. 결국 Pivotal이 서비스하고 있는  Pivotal Container Service (PKS) 에  Knative가 통합이 되었다고 합니다. 현재 저는 그냥 앞서 말씀드렸던 Spring Cloud의 일부 모듈을 설정해서 사용하고 그 위에 docker-compose의 내부 통신 추상화 기능...

[포스트 공유] Top Five Books to Learn Spring Boot and Spring Cloud for Java Developers

오늘도 다른 이의 포스트를 공유해 드립니다. 몇 년 전부터 매우 핫한 아이템이죠. 스프링부트와 클라우드서비스! 지금은 철 지난 포스트가 되었지만 몇 년 전에 저도 여러 포스트를 올린 적이 있습니다. 버전을 업해서 포스트를 꾸준히 관리해놔야 하는데, 최근 보다 보니 제 포스트보다는 다른 분들의 포스트가 훨씬 훌륭해서 그냥 과거의 산물로 놔두기로 했습니다. (핑계는 그만~~ ^^) 오늘은 그와 관련된 책을 소개한 포스트 하나를 공유하려고 합니다. Top Five Books to Learn Spring Boot and Spring Cloud for Java Developers Infotech 의 Lead Programmer 시고, 제가 자주 가는 DZone 에서도 활발히 활동하시면서 많은 글을 올리시는  Javin Paul 이라는 분의 시각에서 바라본 Top 5 입니다. Top XX 라는 글들을 그리 좋아하지는 않지만 보다 보면 몰랐던 새로운 것을 발견하게 되는 즐거움이 있기도 하죠. 이 글도 최근에 발표된 책들 위주로 정리가 되어있어서 관심 있게 본 글입니다. 참고로 아래는 글에서 언급된 책에 대한 국내 정보와 간단한 정리입니다. 언제나 그렇듯이 원문에는 더 많은 정보가 있으니 꼭 원문을 봐주시길 바랍니다. 1. Spring Boot in Action Walls, Craig가 쓴 책입니다. 국내에서는 스프링부트 코딩 공작소라는 이름으로 번역되어 발매되어 있습니다. 번역본은 2016년 7월 31일에 발매되었다고 합니다. 저도 이 책을 봤습니다만, 스프링부트에 대해서 개괄적인 이해와 동작을 확인하기에 딱 좋은 책이라고 생각합니다. 스프링부트를 사용하고도 한 1년쯤 지나서 이 책을 봤던 거 같은데, 그냥 무작정 검색하고 레퍼런스를 참고해서 쓸 때의 약간의 답답한 부분들을 해소해줬던 책이었던 기억이 있습니다. 다시 보면서 좀 더 정확한 감상을 적고 싶지만, 서울집에 책이 있어서... 2. Cloud Native Jav...

[외국 포스트 공유] 어떻게 하면 더 나은 코드를 짤 것인가? (How to Write Better Code?)

프로그래머가 되고 싶어서 시작하는 친구들도 2~3년 정도를 프로그램해 온 친구들도 또는 그 이상을 프로그래머로 회사에서 일했던 친구들도 모두가 가장 궁금해 하는 건 어떻게 하면 더 좋은 코드를 짤 수 있는가가 아닐까 싶습니다. (사실 이런 고민을 하는 친구들은 정말 훌륭한 프로그래머들의 자질이 있다고 생각하죠. 저런 고민조차 없는 직장인 프로그래머들이 훨씬 많긴 하죠) 저도 15년 정도 여러 분야의 여러 직장에서 프로그래머로 일을 하고 지금도 홀로 개발하는 상황에서 가장 많은 질문을 받았고 지금도 받는 질문일지도 모릅니다. 2년 차에는 어떻게 해야 할까요? 전 5년 차인데 뭘 준비하면 좋을까요? 저는 사실 대기업에서 근무를 해본 적도 없고 그리 훌륭한 프로그래머도 아닙니다. (대기업에 다녀야 훌륭한 프로그래머라는 얘기는 아닙니다. 대기업에서 할 수 있을 만큼의 큰 프로젝트를 해 본 적이 없다는 의미입니다.) 즉, 저런 질문에 뻔뻔하게 답을 해 줄 수 있을 만큼의 능력이 안 됩니다. 그래도 최근에 블로그를 새로 열면서 한 번쯤은 제가 중소기업 또는 중견기업에서 일하면서 느꼈던 프로그래머로서의 본질적인 부분들에 대한 내용을 정리해보는 것도 나쁘지 않겠다는 생각이 들더군요. 한 번 준비를 해 보자는 생각으로 조금씩 정리를 해 보고 있는데 참 쉽지 않더군요. 그래서 제가 도움을 받았던 책들이나 생각들이라던가 실제 있었던 일들이라던가를 간단히 정리해 보고 있습니다. 역시 가진 것이 별로 없다 보니 쉽지 않더군요. 그런데 오늘 뉴스리더를 보다 보니 제 생각과 비슷한 부분이 상당히 많은 외국 포스트가 하나 올라왔더군요. 그래서 일단은 이 글을 공유하는 것에서 시작해 보고자 생각했습니다. 이 글의 내용의 핵심을 조금은 극단적인 표현으로 요약하면 협업을 잘하고 다른 동료에게 민폐가 되지 않게 프로그램을 개발하는 것이 좋은 코드를 만드는 방법이라는 겁니다. 저게 전부는 아니겠지만, 아니 아니지만 저런 자세에서 시작되는 게 아닐까 합니...

개발하는 카페 사장으로의 새출발

정말 오랜만에 포스트를 올리는 것 같습니다. 별로 궁금해하시는 분들도 없긴 하지만, 그래도 거의 8개월이 넘게 멈췄던 블로그를 다시 시작하는 만큼 일단 근황 보고 하는 포스트를 먼저 올려볼까 합니다. 그동안 개인 신변에 많은 변화가 있었어요. 제주도 친구와 공동작업을 진행하다 보니 많은 시간을 제주에서 보내게 되었었는데요. 개인적인 실력의 부족과 여러 어려움이 닥쳐서 작업이 계속 미뤄지더군요. 그러다 친구의 꼬임(?)에 넘어가 결국 제주도에서 카페 공동사장을 하고 있습니다. 물론 카페 한쪽에 작업공간을 만들고 시간 날 때는 개발 작업을 진행하고 있고요. 친구와의 공동작업 프로젝트 외에도 개인 프로젝트도 진행을 시작하려다 보니 예전보다 더 정신은 없네요. 사실 별로 진행되는 것도 없으면서 말이죠. 혹시 제주도에 오시는 개발자분들 중 시간은 많은데 할 일이 없으신 분들은 들려주세요. 함께 개발 이야기도 할 수 있다면 좋겠네요. 여기 있으니 개발자와 직접 소통이 거의 없어서 좀 외롭네요. 계획에 없었던 일이긴 하지만, 이왕 제주도 생활이 시작된 거 간간이 제주도 이야기도 올려볼까 합니다. 참고로 카페와 함께 펜션도 하고 있으니 이용해주셔도 됩니다. 헛! 의도치 않게 광고 포스트가 되어버렸네요. 요즘 장사가 안되다 보니 그런가 봅니다. 이왕 광고를 시작한 거!! 펜션 문의는 아래에서 하시면 됩니다. 홈페이지 : https://sumbi.modoo.at/ 카페는 매주 화요일 정기휴무고 오전 10시 ~ 오후 7시까지 영업합니다. 아래는 제가 있는 카페의 사진입니다.

Java 9에서 달라진 것들에 대한 좀 지난 영상. 그래도 참고할만 합니다.

정말 오랜만에 블로그에 글을 올리게 되었습니다. 최근 진행하던 작업이 거의 막바지 기능들에 대한 작업이 진행 중인데 설계도 잘 잡히지 않아서 좀 심란한 상황이라 블로그에 글 올릴 여력이 없었네요. 게다가 명절이 다가오고 하다보니 아직 수입이 없는 저에게는 이래저래 많이 심란한 시기였습니다. 뭐 변명 여기까지 하고.. 최근 제 작업이나 다른 상황보다 저에게 큰 혼란은 다른 것이었습니다. 바로 봇물 터지듯이 터져 나오는 릴리즈 상황들이었는데요... 이모든 것의 원흉은 바로 Java 9 입니다. 말 많고 탈 많았던 Java 9이 드디어 정식 릴리즈를 하고 말았더군요. 그에 발맞춰서 Springframework도 "많이 기다렸습니다!!! 이제 우리도 릴리즈해요!!!"라면서 Springframework 5.0을 정식릴리즈를 했지요. 아직은 Spring Boot 라던가 Spring IO 같은 프로젝트들은 Springframework 5 지원 버전을 정식 릴리즈하지는 않은 것 같지만 대부분 릴리즈에 가까운 단계인 것 같으니 곧 줄줄이 쏟아져 나오겠지요. 저 같은 게으른 프로그래머는 아직 Java 8의 Functional이나 Lambda 등등 제대로 사용도 못 하고 공부도 거의 안 하고 있지만, 결국 저들에게 익숙해져야 하겠지요? Reactive도 의도적이랄까 귀찮아서랄까 멀리하려고 노력하면서 찔끔찔끔 공부해 왔습니다만, 좀 더 적극적으로 달려들 때가 온 것이 아닌가 싶습니다. 하늘은 어째서 저에게 이런 시련을 내려주시는 걸까요? (헤헤헤) 저같이 게을러서 아직 Java 9 을 멀리하셨던 프로그래머가 있으시다면 2017년 상반기에 있었던 DEVOX에서 있었던 Java 9 에 대한 동영상 두 개를 추천해 드리고자 합니다. 우선 "55 New Features In JDK 9"을 보시고 전체적인 내용을 파악하신 후에 "Real World Java 9"을 보시는 것을 추천해 드리지만 각각 동영상이 52...

Springframework 5에서 바뀌는 것들에 대한 간단 정리 및 생각

Spring framework 5 에 대해 많은 분이 기대와 두려움을 가지고 계시지 않을까 생각합니다. 특히 기대를 하고 계신 분들은 Reactive Programming 지원을 기대하고 계시지 않은가 생각이 드는데요. 7월 초에 John Thompson 이란 분이 D-Zone에 아주 깔끔하고 멋지게 정리를 잘해서 글을 쓰셨더라구요. 해당 글은  https://dzone.com/articles/whats-new-in-spring-framework-5 에서 확인을 하실 수 있습니다. 혹시 Spring framework 5에서 달라지는 내용의 좀 더 자세한 내용이 필요하신 분들은 Spring framework github의 wiki 를 참고하시면 됩니다. 본 포스트는 언제나 그렇듯이 윗글에 대한 번역이 아닙니다. 그저 윗글을 다시 정리하면서 제 생각을 한번 정리해 놓은 포스트입니다. Spring framework 5는 현재 5.0.0.RC2(2017.07.23일 기준)까지 릴리즈된 상황입니다. Spring framework 5에서 크게 변화하는 내용을 John Thompson은 8가지로 깔끔하게 정리해주고 있습니다. 1. JDK 지원 버전의 업데이트 5버전은 원래 JDK 9 버전의 지원을 위해서 시작됐던 프로젝트로 알고 있는데 맞는지는 모르겠네요. JDK 9의 Release가 늦어져서 Spring framework 5가 먼저 Release 될 것으로 보이지만, JDK 9가 Release가 되면 언제건 적용할 수 있다고 합니다. 좀 아쉬운 부분은 JDK의 최소 버전은 JDK 8이라는 부분이 아닐까 싶네요. 이 때문에 Spring framework 5에 무관심한 분들도 많으실 거라고 생각합니다. 지금 진행하는 프로젝트는 JDK 8을 기반으로 합니다만, 최근까지 다니던 회사의 경우는 JDK 7까지가 업그레이드 한계였던 회사였습니다. 아마도 JDK 업그레이드를 쉽게 못 하시는 회사들이 많으니 "나랑은 관계없는 얘기군...