JPA SQL 중심적인 개발을 진행하다 보니 다음과 같은 문제를 확인할 수 있었습니다. 반복적이고 지루한 작업 객체와 테이블 사이의 패러다임 불일치 문제를 해결하기 위해 객체를 자바 컬렉션에 저장하듯 DB에 저장할 수 없을까 하는 생각으로 새로운 방법을 찾게 되었고 JPA가 등장하게 되었습니다. JPA(Java Persistence API)는 자바 진영의 ORM 표준 기술로 애플리케이션과 DB 사이에서 동작하게 됩니다. Java 코드로 JPA에 접근하게 되고 JPA는 내부적으로 JDBC API를 이용해 DB에 접근합니다. JPA를 간단히 말하면 인터페이스의 모음입니다. 기존 JPA 없이 JDBC API를 사용할 때는 SQL을 다음과 같이 일일이 작성해야 했습니다. public Member createMe..
이번 장에서는 이름을 잘 짓는 간단한 규칙에 관해 설명하고 있습니다. 의도를 분명하게 밝혀라 필자는 의도가 분명한 이름이 정말로 중요하다는 사실을 거듭 강조하고 있습니다. 이러한 좋은 이름을 지으려면 시간 투자가 필요하지만 결국 투자한 시간만큼 시간을 절약할 수 있습니다. 또한 코드를 읽는 사람에게도 행복을 전해줄 수 있습니다. 변수, 함수, 클래스 이름은 아래의 질문에 답할 수 있어야 합니다. 존재 이유는? 수행 기능은? 사용 방법은? 기능적, 문법적으로 같은 코드를 작성했음에도 이름으로 인해 코드의 의도나 상태가 명확해질 수 있습니다. public List getAll() { List lists = new ArrayList(); for (int[] theList : theLists) { if (the..
코드가 존재하리라 코드도 자동으로 생성되는 요즘 시대에 코드보다는 모델이나 요구사항에 더 집중해야 할까요? 필자는 그렇지 않다고 얘기하고 있습니다. 코드는 요구사항을 상세히 명시하는 작업이고 실제 세계를 기계가 이해할 수 있도록 하는 추상화를 도와주기에 코드가 사라질 가망은 전혀 존재하지 않습니다. 앞으로도 지속해서 추상화 수준은 높아질 것이고 모호한 요구사항을 완벽히 분석해 알맞은 프로그램을 만드는 기계가 나올 확률도 매우 낮습니다. 결론적으로 코드는 요구사항을 표현하는 하나의 언어임에 집중해야 합니다. 나쁜 코드 코드를 작성하는 저희 프로그래머에게 있어서 좋은 코드가 중요하다는 것은 명확한 사실입니다. 긴 시간 동안 나쁜 코드로 인해 불편함을 많이 겪어 왔기 때문입니다. 나쁜 코드는 생산성을 떨어뜨리..
알고리즘을 공부하면서 문자열 처리와 관련된 문제를 많이 접하게 되었습니다. 패턴을 찾고 문자열을 변경하는 데 있어 하나씩 찾아 탐색하기에는 코드의 가독성도 떨어지고 실수도 종종 존재하였습니다. 이를 간편히 처리하기 위해서는 정규표현식에 대한 이해와 숙련이 필요했고 이를 정리해보고자 합니다. 정규 표현식 정규 표현식이란 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어입니다. 문자열을 다루는 데 굉장히 유용하기 때문에 여러 프로그래밍 언어에서 이를 지원하고 있습니다. 문법이 일반적인 프로그래밍 언어에 비해 굉장히 난해하여서 지속적인 시간 투자가 필요합니다. 저도 정규 표현식이 무엇인지 알고 있었지만, 학습 어려움으로 인해 미루고 있었던 내용입니다. 컴파일러의 파서 부분에는 정규 표현식이 ..
클라우드 네이티브 아키텍처의 도입을 위해 애플리케이션은 기본적으로 마이크로서비스 아키텍처의 형태로 개발이 진행되어야 합니다. 그 이유는 클라우드 컴퓨팅 모델의 확장성과 유연함을 잘 살릴 수 있고 유지보수나 변경점을 적용하는 데 있어 훨씬 유리하기 때문입니다. 마이크로서비스 아키텍처가 무엇인지, 해당 아키텍처의 도입이 꼭 필요한지, 필요하다면 어떤 조건을 확인해야 하는지 정리하고자 합니다. Architecture Monolith 초기 애플리케이션의 아키텍처 구조는 하나의 커다란 소프트웨어에 애플리케이션에 필요한 모든 요소를 포함했습니다. 클라이언트에게 보여지는 프론트 로직, 데이터를 담당하는 DB 로직, 실질적인 비즈니스 로직 등 모든 요소가 단 하나의 소프트웨어에 존재하였습니다. 사진에서 확인할 수 있듯..