본문 바로가기

Project

(21)
현재 프로젝트에 CI 파이프라인 적용하기! 안녕하세요 왕란입니다. 오늘도 개발하기 좋은 흐린 주말이군요!! 이번엔 프로젝트에 간단한 CI 파이프라인을 적용하는 방법에 대한 포스팅을 하려고 합니다.(사실 혼자 개발하는 작은 프로젝트에 필요할까 싶기도 하지만, 테스트코드도 많이 작성하면서 좀 완벽한 프로젝트를 지향하고 있어서 하는 거예요!) 보통 빌드, 테스트 및 배포 자동화 파이프라인을 구축하기 위해 CI/CD를 함께하는 경우가 많습니다. 하지만 저는 지금은 배포까지의 과정은 필요하지 않기 때문에 CI 파이프라인만 구축할 예정입니다. CI 란 뭘까?CI(Continuous Integration, 지속적 통합)란 개발자들이 작업한 코드를 자주, 그리고 반복적으로 중앙 저장소(main)에 통합(merge) 하고, 그 과정에서 자동으로 빌드(build)..
[코틀린 프로젝트] - 새로운 프로젝트 구상(4/13~4/26) 안녕하세요 개발자 왕란입니다. (왕란이라는 이름은 온라인에서, 블로그에서만 사용되는 이름입니다!!) 백엔드 개발자로서 안정적은 애플리케이션을 개발하기 위해 이론적인 이런저런 내용을 다루다 보니, 뭔가 부족하다는 생각이 들었습니다. 저도 블로그 포스팅을 할 때, 이런 저런 아티클이나 예전에 진행했던 프로젝트를 할 때 들었던 강의, GPT 등등의 많은 레퍼런스를 참조해 가며 쉽게 이해할 수 있도록 개념을 다루려고 했습니다. 하지만 결국 개념을 설명할 때 예제코드만 보여드릴 수밖에 없었습니다. 예제코드를 보고 이해하는 것보다 실제 프로젝트에서 어떻게 작성되고, 실제 적용이 어떻게 되는지를 프로젝트로 보여드리며 진행하고 싶어 졌습니다! 그래서 실제로 프로젝트를 개발해 가면서 발생한 문제, 테스트, 개선, 변경 ..
[프로젝트] 식당 예약 및 웨이팅 플랫폼 개발 - 주제선정 이번에 팀원들과 새로운 프로젝트에 대한 개발을 시작하면서, 프로젝트 설계의 전반적인 과정과 저희 팀에서 오고 갔던 기술적 의사결정의 과정들, 개선되는 점들에 대해서 정리하려고 합니다. 지금은 프로젝트 주제가 식당 예약 및 웨이팅이 가능한 플랫폼을 만드는 것으로 확정되었지만, 주제 선정 및 이번 프로젝트에서 팀원이 각각 얻어가고 싶은 스킬이나 역량에 대한 부분 부터 고민이 많았던 것 같습니다. 🎬 주제 선정의 과정처음 여러 주제를 던져보기 전, 팀원별로 각각 이번 프로젝트에서 해보고 싶은게 어떤 것인지에 대해서 말해보았습니다. 본인: Kafka 나 RabbitMQ 같은 라이브러리를 사용해서 실시간 메세지 관리 기능을 구현하는 것팀원1: ElasticSearch 를 활용한 조회 시스템 성능 개선팀원2: M..
[개인 프로젝트] - 레거시 코드 리팩토링 이번에 포스팅할 내용은 개인 프로젝트로 진행한 `레거시 코드 리팩토링` 이었습니다. 실무에서는 수년동안 많은 개발자들을 거쳐 작성된 코드들이 있고, 잘 작동되는 코드여도 오래된 기술을 사용하거나 현재는 사용되지 않는 코드도 많습니다. 이런 코드들을 `레거시 코드`라 하고 이 부분을 찾아 리팩토링 하는 과정을 통해 코드 가독성이나 유지보수성을 높이고, 최신 기술을 도입해서 향후 확장성을 높이거나 성능개선 부분에서도 이점을 볼 수 있습니다. 이번 프로젝트를 진행하면서 개선된 부분은 총 14가지 부분이고, 그 내용은 다음과 같습니다. 1. `@Transactional` 이 readOnly 옵션으로 지정되어 있어 쓰기 작업이 제대로 구동안된 점2. 사용자가 회원가입 시, 닉네임을 지정할 수 있도록 `nickna..
[팀 프로젝트] 아웃소싱 - 배달 어플리케이션 구현 1. 프로젝트 시작 이번 프로젝트는 배달 어플리케이션을 외주 받았다라는 상황을 가정하여 짧은 개발 기간동안 클라이언트의 요구사항에 맞게 프로그램을 개발하는 것이었습니다. 보통의 프로젝트와 다를바 없는 것 같지만, 이전의 일주일간 진행한 팀프로젝트와의 차별점은 필수적으로 구현해야하는 기능이 조금더 늘어나고, 새롭게 구성된 팀원과 협업을 통해 어떻게하면 짧은 시간에 최고의 효율을 낼 수 있는가 가 핵심포인트였다고 생각합니다. 또한 기존의 프로젝트는 회원, 게시글, 댓글 정도의 각 `테이블(Entity)` 간의 연관관계가 간단한 것이 아닌, 회원, 가게, 메뉴, 주문, 리뷰 등의 필수적인 5가지의 기능에서 각각의 엔티티간 매우 세세한 연관관계 설정이 필요했습니다.그리고 추후에 추가될 기능에 따라 더 복잡한 연..
[기능 개선] - Refactoring, Test, AOP 프로그램을 개발하고, 기능이 문제없이 구현되었을 때 개발자들이 다음으로 고려할 수 있는것은 어떻게 하면 성능을 향상시킬 수 있을까? 입니다. 이를 행하기 위해선 다양한 방법이 존재합니다. 이번 글에선 Refactoring, Test, AOP 에 대해서 알아보도록 하겠습니다.1. Refactoring리팩토링은 소프트웨어의 외부 동작을 변경하지 않으면서 내부 구조를 개선하는 프로세스 입니다. 주로 코드의 가독성, 유지보수성, 확장성을 높이기 위해 사용됩니다.실제로 적용할 수 있는 방법은 Early Return, 불필요한 If-else 문 및 주석 최소화, 코드 포맷팅, 일관된 네이밍 컨벤션 적용등이 있습니다. 방법 메서드 추출: 중복된 코드 블록을 메소드로 추출하여 코드의 재사용성을 높이고 가독성을 개선합니..
[기능 개선] - 일정 관리 앱 개인 일정을 관리 할 수 있는 어플리케이션을 개발하였었습니다. 처음 개발 할 당시, 일정에 관련된 CRUD 에 대한 기능만 구현 되도록 작성 했었고, 그때는 `RESTful` 하게 만들지 못하여서 여러 단계를 거쳐 기능 및 앱 구동 방식을 개선해왔습니다. 두번째로 개선할 당시에는 회원관리가 가능하도록 회원에 관련된 CRUD 기능을 추가하고, 일정에 댓글을 달아서 회원간 소통이 가능하도록 댓글 CRUD 기능만 구현하였습니다. 추가적으로 `JWT` 를 활용하여 로그인 시 토큰을 발급하여 앱에 포함된 기능을 사용할 때, 토큰을 검증하는 기능을 추가하였습니다. 이번에는 토큰을 검증하는 로직을, 비즈니스 로직이 아닌 필터에서 검증하여 API 를 요청할 시에 미리 토큰을 검증하도록 수정하고, `GlobalExcep..
[팀 프로젝트 KPT+F] Spring JPA & JWT & Github 주어진 시간은 정확히 5일. 짧은 팀프로젝트였습니다. 하지만 매순간순간의 시간이 다 기억나는 아주 밀도높은 프로젝트라고 생각듭니다. 이번 프로젝트로 얻은 부분들에 대해 말해보도록 하겠습니다.1. Spring Data JPA  내가 지금 어떤것을 공부하고 성장해 나가고 있는지, 그 과정 속에서 스스로 깨닫는 것, 내가 어떤것을 모르는지 등에 대해 스스로에 대한 통찰을 요즘은 '메타인지' 라는 용어를 쓰는 것 같습니다. 프로젝트를 시작하기 전, JPA 에 대해서 무엇인지 JDBC와 어떤것이 다른지, 어떤 공부가 필요한지에 대해 갈피를 못잡고 있다는 생각이 들었습니다. 하지만 팀원과 주어진 프로젝트에 대해서 말하고, 설계하고, 저보다 더 잘 알고 있는 팀원이 어떤이야기를 했을 때, 제가 스스로 모른다는 생각이..