분류 전체보기 262

물류 서비스 구조 분석 - 마켓컬리

마켓컬리 물류 서비스주요 기술 스택Java(Spring Boot)JPAGraphQLOracleAurora(MySQL)AWS MQ 서비스 구조이커머스 서비스이커머스 백엔드 시스템은 Legacy PHP와 PHP/Laravel과 Java/Spring Boot가 하이브리드 형태로 구성Legacy PHP는 회원, 상품, 주문, 결제등을 관리하고, 검색 및 데이터 기반 서비스는 Java/Spring Boot로 개발전체 이커머스 시스템은 Spring Cloud Netflix를 기반 물류 서비스물류 서비스는 크게 SCM, WMS, TMS으로 구성 Warehouse Management System은 서비스 형태 구조 고도화를 통하여 다양한 형태의 물류 창고 관련 운영 효율화를 수용가능하도록 개발하고 AWS MQ, JPA..

카테고리 없음 2024.12.16

[설계] 도서관 사이트 개발 - 요구사항 명세서

백엔드 개발에 필요한 기술을 적용하며 깊게 이해하기 위해 프로젝트를 시작..!주제는 평소에 책 읽을 때 많이 사용하는 교보문고 전자도서관을 주제로 잡아 분석하고 사용하면서 추가하고 싶었던 기능을 수정하며 구현하려고 합니다. 프로젝트를 시작하며 프로젝트의 목표와 범위를 구체적으로 정의하며 필수 기능과 부가기능 등의 개발 우선순위를작성하는 요구사항 명세서를 설계했습니다.요구사항 명세서를 통해 일정관리 및 프로젝트 관리 효율을 높이기 위해 자세하게 작성하려고 노력했습니다. 1. 요구사항 명세서 초안 작성 목표1. 사용자, 관리자 인터페이스 구현2. 전자책 대출/반납/예약 등 기능 구현3. 개인별 맞춤화 추천 구현4. 도서의 대출 예약 상태 변경 시 레디스 적용 기능 유저- 회원가입 및 로그인, 로그아웃 기능 ..

카테고리 없음 2024.12.16

IntelliJ 무한 로딩

본격 프로젝트를 시작하며 spring initializer로 파일을 만들고 야심 차게 프로젝트를 인텔리제이로 켰다그 결과 무한 로딩이라는 문제를 만나고 말았다..!이 때까지 잘 사용하던 인텔리제이가 왜 이렇게 된 걸까 당황했지만 차분하게 방법을 찾아 해결해 보기로 했다. Command + Shift + a 눌러 registry -> awt.file.dialog.enable.filter 체크 해제 후 리부팅Settings -> Build,Execution,Deployment -> Build and run using -> Gradle에서 IntelliJ로 변경JDK Gradle JVM 버전 맞춰보기 Settings -> Build, Execution, Deployment > Build Tools -> Gra..

카테고리 없음 2024.12.15

[설계] 요구사항 명세서

사이드 프로젝트 계획을 수립하고 설계하며 요구사항 분석에 대해 다시 공부하며 설계해보았다. 1.  요구사항 명세서 정의요구사항은 프로젝트를 수행하기 위해 필요한 조건이나 시스템에서 제공하는 기능과 동작을 정의하며, 요구사항 명세서는 프로젝트에서 무엇이 구현되어야 하는지 작성하며 프로젝트의 모든 요구사항들을 체계적으로 정리하고 문서화한 것이다. 2.  요구사항 종류요구사항 명세서는 기능적 비기능적 요구사항으로 나뉜다. 2-1. 기능적 요구사항- 기능 요구사항은 프로젝트에서 수행해야 할 기능에 대한 설명ex) 주문 내역 조회, 장바구니 상품 추가 2-2. 비기능적 요구사항시스템의 품질 속성과 관련된 요구사항성능 : 처리량, 속도, 응답 시간보안 : 인증방식, 암호화 기법사용성 : 학습 용이성, 만족도, 편리..

카테고리 없음 2024.12.14

mapper 설계

사이드 프로젝트를 시작하며 Mapstruct를 이용하여 mapper 인터페이스를 설계 1. MapStruct 란?데이터베이스에서 데이터를 조회하고 서비스에서 로직을 설계 하기 위해 Dto -> Entity, Entity -> Dto 의 Mapping 작업을 해준다. 사용자가 인터페이스에서 구현하고 맵핑에 대한 설정을 해주면 컴파일하면서 MapStruct가 내부 구현체에서 setter 등을 이용하여 객체를 맵핑한다. Mapstruct는 비슷한 맵핑 작업을 해주는 라이브러리 중 속도가 빠르다! 2. MapStruct 사용 이유첫번째, Mapstruct는 비슷한 맵핑 작업을 해주는 라이브러리 중 속도가 빠르다.두번째, 자동으로 DTO 클래스와 엔티티 클래스를 매핑해주어 편리하다.세번째, Mapstruct는 사..

카테고리 없음 2024.12.10

내가 좋아하는 개발 방법론과 그 이유

개발 방법론의 종류 1. 워터폴(폭포수) 방식(Waterfall Methodology)폭포수가 내려오는 것처럼 순차적으로 진행하는 개발방법을 의미한다. 요구사항 정의 - 설계 - 구현 - 테스트 - 유지보수로 개발 프로세스를 순차적으로 진행한다.이전 단계의 결과물이 완성되어야 다음 단계로 가는 구조를 가지며 원칙적으로 이전 단계로 돌아갈 수 없는 특징이 있습니다.  2. 애자일 방식(Agile Methodology)애자일은 유연하고 반복적으로 개발하는 방법으로 지속적으로 피드백을 받아 개발을 진행한다.개발 초기부터 고객의 요구사항을 유연하게 받아들여 변화에 대응한다.계획 및 분석 - 설계 - 개발 -테스트의 단계를 작은 단위로 분리하고 완료되면 다음 사이클을 반복적으로 진행한다.애자일 방법론의 종류는 대..

카테고리 없음 2024.05.11

회원 비밀번호 암호화는 왜 필요하며, 누가 책임져야 하는가

회원 비밀번호 암호화가 필요한 이유?사용자의 비밀번호를 그대로 데이터베이스에 저장해서 관리하는 것은 위험하다. 비밀번호를 작성한 그대로 데이터 베이스에 저장하면 데이터베이스의 보안이 뚫렸을 때 모든 사용자의 비밀번호가 노출될 수 있기 때문이다. 데이터관리자가 비밀번호를 그대로 알게 되는 것도 문제가 될 수 있다. 보안은 절대 완벽하지 않기 때문에 취약점이 발견되어도 데이터의 정확한 내용을 확인할 수 없도록 대비책을 마련하는 것이 중요하다. 이를 위해 반드시 사용자의 비밀번호를 암호화하여 저장하고 관리해야 한다. 사실 서비스를 운영하면 법적으로 규제되고 있을 만큼 필수적이다. 서비스 사용자 입장에서도 자신만의 비밀번호를 여러 곳에서 사용하기 때문에 사용하는 서비스에서 한 곳에서 유출되더라도 피해가 심각해질..

카테고리 없음 2024.05.05

내가 생각하는 개발자의 소통 그리고 협업

내가 생각하는 소통 그리고 협업은?소통은 서로의 생각을 정리하고 이해하려는 노력이 중요하다. 특히 모르는 것을 설명할 때, 소통의 어려움을 많이 겪는 것 같다. 상대방의 관점에서 어떻게 이해할지 고민하고, 쉽고 명확한 용어와 예시를 사용하여 배려하며 설명하는 것이 중요하다.또한, 소통은 단반향이 아닌 양방향이기 때문에 내가 말하고자 하는 것뿐만 아니라 상대방의 의견과 생각도 귀 기울여야 한다.의견을 경청하고 존중하는 것도 소통의 기본이라고 생각한다. 이러한 상호 간의 원활한 의견 공유로 유익한 대화와 협업이 가능해진다.  협업은 공동의 목표를 향해 함께 노력하고 무언가를 생산하는 과정이라고 생각한다. 목표를 달성하기 위해서 소통은 필수적인 요소이다.각자의 생각과 아이디어를 정리하고 다른 사람의 의견에 경..

카테고리 없음 2024.05.03

과제 테스트 패키지 구조 파헤치기

과제 테스트 패키지 구조 파헤치기출처 : https://school.programmers.co.kr/skill_check_assignments/232 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 패키지 구조 분석   1. 도메인 주도 설계 (DDD)첫 번째로 주문, 상품, 사용자, 에러, 보안과 공통 사용 클래스를 정리한 util 패키지로 이루어져 있었다.위 구조를 사용하면 도메인 모델이 명확하게 드러나며, 유지보수성을 높일 수 있다. Dto, Repository, Controller, Service로 구성되어 있고, 레포지토리는 JPA를 사용하지 않고 R..

카테고리 없음 2024.05.02

내가 프로젝트에서 제일 중요하게 생각하는 것

내가 프로젝트에서 제일 중요하게 생각하는 것 면접 준비를 하면서 이 주제에 대해 생각해 본 적이 있었다.개발자 면접준비 목록에서  빠지지 않는 항목이었기 때문에 어렵지 않게 답을 낼 수 있었다내가 프로젝트에서 제일 중요하게 생각하는 것은 책임감인 것 같다. 이런 생각을 가지게 된 몇 가지 경험이 있었는데, 진행했던 프로젝트에서 맡은 일을 막바지쯤 어렵다는 이유로 포기하여 해당 부분을 마무리 짓지 못한 채 프로젝트를 마무리했던 일이 있었다. 또 프로젝트를 진행하면서 체력적으로 힘듦을 호소하시며 떠나가고 그분이 맡은 부분을  내가 대신 맡기도 했었다. 이런 경험을 통해서 개발 실력이 좋거나 프로젝트 계획을 세워도 책임감 있게 완주해내지 않으면 그 프로젝트는 누군가의 희생으로 완성되거나 마무리되지 못했다. ..

카테고리 없음 2024.04.30