Skip to content
This repository has been archived by the owner on Aug 14, 2022. It is now read-only.

f-lab-edu/black-postoffice

Repository files navigation

black-postoffice

  • 익명으로 편하게 고민, 일상을 공유하는 소셜 네트워크 서비스입니다.

WIKI

해당 프로젝트의 모든 정보는 WIKI 를 참고하실 수 있습니다.

API 문서

현재까지의 사용기술

기술 스택

서버 구조도

Untitled Diagram drawio (4)

디렉토리 구조

└─ src
   ├─ docs                                       Rest Docs API 자동화 관련
      ├─ api-guide.adoc
      ├─ api-html.adoc
      
   ├─ main
      ├─ kotlin
         ├─ com.flabedu.blackpostoffice
            ├─ commom                             공통으로 사용하는 파일들
               ├─ annotation                        - 사용자 권한 체크등 관련된 어노테이션            
               ├─ config                            - Redis, MySQL Replication, S3등 설정 파일 관련 
               ├─ encryption                        - 비밀번호 암호화등 관련
               ├─ enumeration                       - 사용자 권한 부여등 Enum Class
               ├─ interceptor                       - 스프링 인터셉터를 통해 중복 코드를 제거하기 위한 것과 관련
               ├─ property                          - yml파일을 객체에 매핑하여 property로 사용
               ├─ utils.constants                   - 공통 상수 관련
            ├─ controller                         Model과 View의 연결하는 제어 로직을 담당
            ├─ exception                          예외처리 관련
               ├─ dto                               - 예외처리 관련 데이터 교환을 위해 사용
               ├─ handler                           - 전역적으로 예외를 다루는 핸들러                          
             ├─ mapper                            Mybatis 매핑XML에 기재된 SQL을 호출하기 위한 인터페이스
             ├─ model                             비즈니스 로직과 사용되는 데이터를 다루는 영역
             ├─ service                           비즈니스 로직을 수행
             
   ├─ test                                        테스트 코드 관련
      ├─ kotlin
         ├─ com.flabedu.blackpostoffice
            ├─ ...                     

프로젝트 주요 관심사

  • 여러 기술들의 트레이드 오프를 고려한 후, 어떤 기술을 도입하는 것이 가장 서비스에 가장 적합할까?
  • 다른 개발자가 내 코드를 보았다고 가정할 때, 어떻게 코드를 작성하는 것이 이해하기 쉬운 코드이며 유지보수에 용이한 코드일까?
  • 꾸준히, 깊은 이론 학습을 통해 내가 작성한 코드를 어떻게 더 좋은 코드로 만들까?
  • 대용량 트래픽의 상황에서 지속적인 서버 개선을 위해 어떻게 성능을 튜닝할까?
  • 위의 관심사들을 기반으로 고민한 이슈들을 기술블로그 에 작성하고 팀 내 공유하여 함께 성장해가는 개발 문화 추구

코틀린 사용 이유

  • 자바에서는 형식을 맞추기 위해 무의미하고 반복적인 코드를 작성하게 되어 항상 코드가 비대해지기 마련이었습니다. 저는 이 문제를 해결하기 위해 코틀린을 사용하였습니다.
  • 코틀린은 타입 추론과 더불어 자체적으로 함수형 프로그래밍을 지원해주기 때문에 자바에 비해 훨씬 코드를 간결하게 작성할 수 있었으며 개발 생산성과 유지 보수성 면에서도 훨씬 좋은 성과를 거두었습니다.
  • 또한 코틀린은 별도의 표기가 없는 경우 널 값을 허용하지 않기 때문에 자바에서 흔히 발생하는 널 포인터 예외를 피할 수 있었습니다. 이는 널 포인터 때문에 프로그램이 중단되는 현상을 방지하는 성과를 거둘 수 있었습니다.