전체(25)object(9)프로젝트(5)Spring(3)Java(2)회고(2)test(1)OOP(1)JPA(1)infra(1)

Fixture Monkey With Kotlin

테스트를 작성하다보면 프로덕션 코드를 작성하는 시간보다 테스트를 위한 픽스처를 만드는데 더 많은 시간이 소요될 때가 있다. 테스트를 작성하는데 시간이 많이 들고 번거로울 수록 테스트 코드를 생략하게 되고 결국 결함에 취약한 시스템을 구현할 위험이
2024-03-03 10:00
포스트 썸네일

객체지향과 탈 국지화

최근 두 권의 책을 병행해서 읽는 중인데 서로 조금 상반되는 내용을 읽게 되어 내 생각을 정리해 보는 시간을 가져보았다. 한 권은 펠리너 헤르만스가 쓴 '[프로그래머의 뇌](https://m.yes24.com/Goods/Detail/10591101
2024-02-04 10:00
포스트 썸네일

JPA 트랜잭션과 영속성 컨텍스트

최근 구현한 테스트 코드에서 @Transactional 여부에 따라 테스트 결과가 달라지는 문제를 만나게 되었다. 타 서비스로부터 송장 접수 결과에 대한 카프카 메세지를 소비한 다음, 송장 접수에 실패했다면 택배 등록 여부를 실패로 변경하는 로
2024-01-07 10:00
포스트 썸네일

if-else, switch 성능 비교 (feat. JMH)

최근에 회사 팀원분의 추천으로 '크리에이티브 프로그래머'라는 책을 읽어보았는데, 비판적 사고에 대한 중요성을 강조하고 있다. 비판적 사고란 정보를 받아들일 때 단순히
2023-12-24 10:00
포스트 썸네일

레거시 코드에 테스트를 도입하는 방법

제가 인턴으로 팀에 합류하던 당시, 개발팀은 빈번하게 변화하는 요구사항에 고통받고 있었습니다. 테스트 커버리지가 단순히 높은 것이 좋은 테스트 코드라고 생각하지는 않습니다만, 비즈니스 로직 대비 테스트 코드의 비율 자체가 빈약했기 때문에 기능 추
2023-04-07 10:00
포스트 썸네일

PWA 환경에서 푸시 알림 구현하기 (Spring Boot, FCM, Redis)

푸시 알림이란 사용자가 서비스를 사용하고 있지 않은 상황에서도 사용자에게 알림을 보내는 방법입니다. 푸시 알림을 구현하는 방법에는 Server-Sent Events (SSE) 를 사용하는 방식과 `Firebase Cloud Messaging (
2023-01-03 10:00
포스트 썸네일

GitHub Actions를 통해 CI/CD 구축하기 (feat. Docker, Jib)

저희 Text Me 서비스의 베타 버전이 배포되고 난 뒤에, 사용자들로 부터 수많은 피드백을 받을 수 있었습니다. 사용자 피드백을 빠르게 반영하다 보니 프로젝트의 빌드 및 배포 주기가 짧아졌고 이러한 과정이 서서히 번거롭게 느껴지기 시작했습니다
2022-12-06 10:00
포스트 썸네일

ubuntu 18.04에 Docker 설치하기

프로젝트를 진행하면서 도커 허브에 올라가있는 이미지를 가져와서 배포 환경에서 실행해야 하는 요구사항이 발생하였습니다. 이를 위해서 ubuntu환경에 docker를 설치했던 과정을 공유해보겠습니다. Docker가 지원하는 OS 다음은 do
2022-12-03 10:00
포스트 썸네일

[오브젝트] 13장 - 서브클래싱과 서브타이핑

상속이 사용되는 두 가지 용도 타입 계층을 구현하는 것부모 클래스일반적인 개념을 구현 부모 클래스는 자식 클래스의 일반화 자식 클래스특수한 개념을 구현
2022-11-29 10:00
포스트 썸네일

[오브젝트] 9장 - 유연한 설계

1. 개방-폐쇄 원칙 (Open-Closed Principle) 개체는 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀 있어야한다.확장에 열려있다.새로운 동작을 추가해서 어플리케이션의 기능을 확장할 수
2022-11-02 10:00
포스트 썸네일

나는 개발자로서 어떻게 성장해야 할까

나는 과거에 스스로를 성장하는 개발자, 꾸준한 개발자라는 타이틀을 사용해서 포장하고는 했다. 실제로 소프트웨어를 전공하면서 성실히 프로젝트를 진행했고 CS 지식을 쌓았다. 하지만 방향성 없는 꾸준함은 지속 가능하지도 않고 효과적이지도 않다는 사실을 깨
2022-10-28 10:00
포스트 썸네일

어노테이션 기반 MVC로 리팩터링하기 - MVC 2편

이번 포스트에서는 이전 포스트에서 구현한 MVC 프레임워크를 어노테이션 기반의 MVC로 점진적으로 리팩토링해 나가는 과정에 대해서 다뤄보도록 하겠다. 1. 불편함을 감지
2022-10-17 10:00
포스트 썸네일

MVC 프레임워크 만들기 - MVC 1편

7월에 넥스트 스텝에서 진행하는 만들면서 배우는 스프링 3기에 참여하였습니다. 이 포스트는 해당 과정에서 스스로 고민하며
2022-10-08 10:00
포스트 썸네일

[오브젝트] 7장 - 객체 분해

모든 프로그래밍 패러다임은 추상화와 분해의 관점에서 설명 가능 추상화 메커니즘 시스템을 분해하는 방법을 프로시저와 데이터 추상화중 하나를 중심으로 하여 결정해야한다. 프로시저 추상화 소프트웨어가 무엇을 해야하는지
2022-10-02 10:00
포스트 썸네일

[오브젝트] 6장 - 메시지와 인터페이스

객체지향 어플리케이션의 가장 중요한 재료는 객체들이 주고받는 메시지 이다. 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는 설계 원칙과 기법이 이번장의 핵심 협력과 메시지 클라이언트 - 서버 모델 메시지와 메시지 전송
2022-09-26 10:00
포스트 썸네일

다중 요청 처리를 위한 ThreadPool 적용하기

프레임워크는 개발자가 쉽고 편하게 개발을 할 수 있도록 많은 기술을 추상화해서 제공한다. 스프링 또한 많은 부분이 추상화 되었으며 개발자 스스로가 의문을 갖지 않는다면, 모른채 넘어갈 기술들이 여럿 존재한다. 오늘은 그러한 기술들 중, 개발자들을
2022-09-20 10:00
포스트 썸네일

[오브젝트] 5장 - 책임 할당하기

책임 중심 설계 어떤 객체에게 어던 책임을 할당할지 결정해야한다 문제 해결을 위한 다양한 책임 할당 방법이 존재하며 일종의 트레이드오프 활동이다. 상황과 문맥에 따라 최적의 책임 할당 방법을 선택해야한다. 책임 중심 설계를 위
2022-09-19 10:00
포스트 썸네일

[오브젝트] 4장 - 설계 품질과 트레이드오프

좋은 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 캡슐화를 통해 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 것 구현 변경될 가능성이 높은 부분 인터페이스 상대적으로 안정적인 부분 변경의 정도에
2022-09-12 10:00
포스트 썸네일

[오브젝트] 3장 - 역할, 책임, 협력

객체지향의 본질 : 협력하는 객체들의 공동체를 창조하는 것 기능 구현을 위해 어떤 협력이 필요하고 협력을 위해 어떤 역할, 책임이 필요한지 파악 객체들은 메시지를 주고 받으며 협력한다 협력 어플리케이션 기능 구
2022-09-05 10:00
포스트 썸네일

[오브젝트] 2장 - 객체지향 프로그래밍

클래스를 먼저 결정하고, 어떤 속성과 메서드가 필요한지 고민하는것리 아니라 객체에 초점을 맞춰야한다 어떤 클래스가 필요한지 이전에 어떤 객체가 필요한지 고민하라 클래스는 공통적인 상태, 행동을 공유하는 객체를 추상화한것
2022-08-29 10:00
포스트 썸네일

[오브젝트] 1장 - 객체, 설계

패러다임 - 한 시대의 사회 전체가 공유하는 이론 혹은 방법. 절차형 → 객체지향으로 패러다임 전환을 맞았다. 프로그래밍 패러다임은 과거의 패러다임을 폐기시키는 혁명적 패러다임이 아니라 과거의 패러다임을 개선하는 발전적 패러다임이다. 객체
2022-08-22 10:00
포스트 썸네일

내가 블로그를 새로 시작하는 이유

앵무새식 블로그 글 처음 블로그를 시작하는 경우에 TIL (Today I Learned) 을 목적으로 하루에 하나의 포스팅을 하는 경우를 주위에서 많이 봤고 나 또한 그랬다. 그 당시에는 하나의 포스팅을 마치고 나면 마치 해당 주제에 대
2022-08-02 10:00
포스트 썸네일

Static 변수 저장위치와 JVM 구조의 변화

Static 키워드를 사용하여 정적 변수와 정적 메서드를 만들수 있는데, 이들을 정적 멤버 (혹은 클래스 멤버) 라고 합니다. ```java class Lesson { static int score = 0; static String grad
2022-07-11 10:00
포스트 썸네일

Nginx 리버스 프록시 적용하여 Tomcat과 연동하기

이번 스프린트에서는 Nginx를 설치하고 리버스 프록시를 적용하여 스프링 부트의 내장 톰캣에 연동하는 작업을 하게 되었는데, 이 과정을 글로 남겨 공유하고자 합니다. 웹 서버는 정적 리소스를 처리하고, WAS는 애플리케이션 로직만을 처리하던 과거와
2022-06-03 10:00
포스트 썸네일

CORS, 알고보니 우리편?

Server Side Template 방식이 아닌 프론트와 백으로 나눠서 API 통신을 하는 프로젝트의 경우, 열에 아홉은 만나게 되는게 바로 CORS 입니다. 아니나 다를까 현재 진행중인 프로젝트에서도 CORS 관련 이슈가 올라왔습니다. !
2022-05-26 10:00
포스트 썸네일
프로필 사진
고산하
경험 공유를 통해 함께 성장하는 선순환 가치를 만들고자 블로그를 운영하고 있습니다.