전체 글
-
트랜잭션 알아보기카테고리 없음 2022. 5. 12. 23:27
프로젝트를 진행하면서, 책에서 봤던 트랜잭션을 실제로 적용하게 되었다. 사실 이론만 공부할 때는 이해가 잘 되지 않아서 몇 번을 읽어도 계속 까먹기 일쑤였다. 혼자 작업을 할 때에도 트랜잭션이 왜 필요한지를 이해하지 못하고 넘긴 적이 있었다. 페어 프로그래밍을 하면서 우리 코드에서 트랜잭션이 어떤 역할을 하는지 학습하게 되었고, 개념이 더 와닿을 수 있었다. 이번에는 좀 오래 기억하고 싶어서 기초적인 부분을 간단하게 정리해보고자 한다. 트랜잭션이란? 데이터베이스의 상태를 변화시키기 위해 여러 쿼리를 하나의 논리적인 작업 단위로 묶어주는 것 트랜잭션을 찾아보면 대부분 이렇게 정의된다. 데이터베이스의 상태를 변화시킨다는 건 INSERT, SELECT, UPDATE, DELETE와 같은 쿼리를 날려준다는 뜻으..
-
페어 프로그래밍 후기프로젝트 2022. 5. 8. 21:02
저번 포스팅에서 페어 프로그래밍이 무엇인지 간단하게 정리해보았다. 이번 포스팅에서는 페어 프로그래밍을 경험하고 나서 느낀 점을 정리해보고자 한다. 우선, 페어 프로그래밍을 온라인으로 진행해서 서로 화면을 공유할 수 있는 툴이 필요했다. 모두 Intellij를 사용하기 때문에 JetBrains가 제공하는 공동 개발 도구인 Code With Me로 편리하게 코드를 공유할 수 있었다. 캠과 마이크도 공유가 가능하지만 이미 구글 미트를 이용하고 있어서 Code With Me로는 코드 작성만 함께했다. (참고: https://www.jetbrains.com/ko-kr/code-with-me/) 페어 프로그래밍은 한 사람씩 돌아가면서 2분간 코딩을 하고, 시간이 끝나면 작성한 코드에 관해 서로 논의하는 방식으로 진..
-
페어 프로그래밍 알아보기프로젝트 2022. 5. 5. 21:06
프로젝트를 진행하면서 코드를 작성하는 데 막막함과 두려움을 느낄 때가 많다. 막상 작성을 시작하면 생각보다 두려운 일이 아니란 걸 알게 되지만, 항상 처음 마음을 다잡기까지 시간이 소요되는 편이다. 두려움을 극복하기 위해 최근 여러 방법을 시도해보는 중인데, 그러던 중 페어 프로그래밍의 존재를 알게 되었다. 먼저 페어 프로그래밍에 대해 알아보고 간단히 정리를 한 후, 직접 경험해보고 후기글을 추가할 예정이다. 페어 프로그래밍이란? 페어 프로그래밍은 '하나의 컴퓨터를 두고 동료와 함께 프로그래밍을 하는 방법'으로, 다른 말로 짝 프로그래밍이라고도 한다. 물리적으로 한 공간에서 한 컴퓨터를 사용하는 것만을 의미하는 게 아니라, 각자의 공간에서 각자의 컴퓨터를 사용하더라도 화면 공유 툴 등을 통해 함께하는 것..
-
결제 기능 - PaymentService에 구현체 주입하기프로젝트 2022. 4. 13. 22:23
프로젝트의 결제 서비스를 구현하는 도중 어려움에 직면해 현재 고민하고 있는 내용을 작성해보고자 한다. 위 그림을 보면 PaymentService를 인터페이스로 두고, 네 가지 결제 클래스가 해당 인터페이스를 구현하도록 되어 있다. 이전까지 다른 서비스를 작성할 때는 구체 클래스가 하나뿐이어서 괜찮았지만, 이번 결제 서비스는 이용자가 어떤 결제 수단을 선택하느냐에 따라 다른 타입의 결제 클래스를 주입해야 했다. 경험하지 못한 부분이어서 이것저것 책이나 다른 분들의 코드를 참고하기도 했고, 멘토님께도 약간의 도움을 받으며 PaymentService에 구체 타입을 주입하는 두 가지 방법을 적용해보기로 했다. 첫 번째는 Factory 클래스를 만들어 해당 클래스에서 구체 타입을 주입하는 방법이고, 두 번째는 C..
-
2. Scale Out의 세션 불일치 문제프로젝트 2021. 8. 11. 12:53
이전 글에서는 Scale Up과 Scale Out을 비교하고, 진행 중인 프로젝트에 적합한 방법으로 Scale Out을 선택하였다. 현재 프로젝트는 세션 방식의 로그인을 구현하고 있기 때문에, 이번 글에서는 세션 방식의 로그인에서 Scale Out이 일으킬 수 있는 문제점을 중점적으로 다루고자 한다. 해당 문제의 해결책은 다음 글에서 자세히 다루게 될 것 같다. Scale Out의 세션 불일치 문제 세션 방식의 로그인 Scale Out의 문제점을 살펴보기 전에 세션 방식의 로그인이 어떤 과정을 거치는지 정확히 알면 좋을 것 같아 관련 내용부터 찾아보았다. 위 이미지를 참고하면 해당 내용을 이해하기 쉬울 것 같다. 클라이언트로부터 최초 요청(로그인 요청)이 오면, 서버는 세션을 생성하여 서버의 세션 저장소..
-
1. Scale Up과 Scale Out 알아보기프로젝트 2021. 7. 23. 18:11
개발 공부를 시작하고 반년이 흘러, 최근 공부한 이론을 바탕으로 배달 서비스 프로젝트를 시작하게 되었다. 프로젝트를 진행하면서 코드만 작성하는 게 다가 아니라는 것을 배우고 있다. 특히 성능을 고려하지 않고 개발을 하는 것은 실제 서비스를 운영할 때 큰 문제가 될 것이다. 후에 문제가 되지 않도록 프로젝트에 이런저런 문제 상황을 가정하고 해결해보기로 했다. 우리 프로젝트가 현재 서비스 중이고, 사용자가 매우 급증하고 있다고 가정한다면? 서버는 늘어나는 사용자를 감당하지 못해서 점차 느려지고 과부하가 걸리고 말 것이다. 이 같은 상황이 생기지 않도록 우리는 서버를 확장해야 한다. 이때 사용하는 전략이 바로 Scale Up과 Scale Out이다. 서버 확장 전략: Scale Up & Scale Out 우선..