Kotlin/넥스터즈 22기

[Nexters] 넥스터즈 22기 4~5주차 활동 후기

kth990303 2023. 2. 13. 15:46
반응형

넥스터즈 활동이 벌써 절반이 지나갔다.

4주차부터는 본격적으로 개발을 시작했으며, 그렇기 때문에 4~5주차를 한꺼번에 작성해보려 한다.

 

넥스터즈 4~5주차 활동

4주차에는 Usability Test(이하 UT)를 진행했고, 5주차에는 UT 피드백을 반영한 중간 발표를 하는 날이었다.

(처음에는 Usageness Test인 줄 알고 이를 구글링했다가 우테코 4기 유세지 깃허브 결과만 뜨길래 당황했었다.. ㅋㅋ)

 

4주차에 UT를 진행한다길래 이때까지 개발을 끝내야하는 줄 알고 깜짝 놀랐었다. 알고보니 다행히 figma로 대략적인 진행 흐름 및 디자인에 대해서만 발표하는 것이었다.

우리 팀 UT 플로우

우리팀은 넥스터즈 출석체크 프로젝트 팀이다.

그렇기 때문에 회원이 로그인하는 경우, 비밀번호 변경, 각 주차별 세션에 접속해서 출첵하는 경우, 마이페이지에서 내 정보 및 출석정보를 확인할 수 있는 경우에 대해 만들어서 진행해주었다. 사실 개발자들보다는 디자이너 팀원분들께서 정말 많이 고생해주셨다.

 

참고로 우리는 넥스터즈 출석체크 대표 애플리케이션을 목표로 하고 있다.

그렇기 때문에 차후에 운영진분들이 관리할 계정 및 페이지인 `관리자 페이지`를 조금 더 빡세게 개발하고 있는 편. 근데 이 부분을 UT 플로우에 포함시키면 보안 상 이슈가 있으리라 판단해서 포함시키지 않았다. 때문에 UT에서 `관리자 관련 기능`은 피드백받을 수 없었으며 이 부분은 비교적 아쉬웠다.

 

5주차에는 받은 피드백을 바탕으로 중간발표를 했는데, 우리 PM님이 알잘딱깔센하게 잘 발표해주셨다ㅋㅋㅋ

중간발표 내용을 요약하자면... 디자이너분들이 워낙 잘해주셨고, 개발 초기단계라 전혀 문제없음! 이다.

 

그리고 우리는 차후에 넥스터즈 운영진들이 실제로 쓸 애플리케이션이기도 해서 QA 기간이 별도로 필요하다고 한다.

그렇기 때문에 지금으로부터 약 10일 내에 배포를 완료해야된다는데....

우리 아직 초기 api 구현도 다 못했는데? ㅋㅋㅋㅋㅋ

 

백엔드 pr 현재 11개...

특히 관리자쪽은 아직 api 회의도 다 못했는데... 과연 10일 내에 할 수 있을까

 

어케든 되겠지...라는 마인드로 빡세게 해봐야겠다.


백엔드 진행상황

아직 많이 나아지진 않았지만, 그래도 3주차 때에 비하면 꽤 진행이 됐다.

 

1. NCP 활용

AWS를 사용할지 NCP를 사용할지 정말 많이 고민했다.

NCP에서 제공해주는 아래 옵션 정도로 세팅하면 되겠다 싶었고, 넥스터즈에서 제공해주는 20만원 크레딧을 이용하여 비용 걱정 없이 인프라 세팅 후 개발을 하려 했다.

https://www.ncloud.com/intro/architecture/3

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

그런데... 문제는 이렇게 세팅하는 데 드는 비용이 생각보다 비싸다는 것...!!

aws보다 사용자가 적고 한국에서 만든 클라우드 서비스라서 aws보다 훨씬 쌀 것이라 생각했는데 크나큰 착각이었다.

 

NCP가 생각보다 비싸서 aws lightsail로 갈아탈까 고민한 흔적...

 

NCP 최소사양 인스턴스 + NCP cloud for Postgres 로 하는 데에만 월 12만원이 예상된다고 한다.

이럴 바에 예전에 내가 포스팅한 것처럼 aws 프리티어로 운영하는 것이 나으리라 생각이 들었다.

https://kth990303.tistory.com/421

 

[AWS] 프리티어 사용중에 Route 53 요금 발생? (feat. aws 프리티어 아키텍처)

aws를 사용하던 중 아래와 같이 요금이 발생했다. 참고로 도메인 구매 비용은 아니다. 나는 가비아에서 별도로 구입해둔 도메인이 있다. 그럼 왜 비용이 발생한 것일까? 배경 및 아키텍처 요금 발

kth990303.tistory.com

문제는 AWS 프리티어가 다들 계정이 없다는 점. (유일하게 내가 aws 프리티어였는데, 나는 사이드프젝에 해당 프리티어를 사용하고 있는 중이었다.)

 

그렇기 때문에 aws lightsail을 가야될까?? 고민하던 중!

 

PM님께서

 

넥스터즈 운영진들이 차후에 쓸 애플리케이션이라 앞으로 비용은 지원해줄 예정이고,
개발 1달동안 크레딧으로 버티면 되니까 그냥 NCP 가자~~

 

라고 하셔서 NCP로 결론이 났다.

 

덕분에 만든지 하루만에 위처럼 Dashboard에 결제 정보가 뜨는 것을 확인할 수 있었다 (...)

아직 Cloud DB for postgres + 스프링 배포만 했는데 하루에 6,490원이 청구됐다...는 건 아니겠지? 한달 예상요금이길 바래야겠다.

 

2. 테스트 관련 세팅_ github action CI, 콜백 초기화 시 테스트 DB truncate 구현

(좌) 내가 한 CI 스크립트 작성, (우) 우테코 정이 작성한 테스트 DB truncate 스크립트 및 @ApplicationTest 작성

테스트를 보다 편리하게 할 수 있도록 우테코 정이 `@ApplicationTest`, `@RepositoryTest`를 작성해주었다.

Spring Data JPA를 사용하기 때문에 @RepositoryTest는 쓰일 일이 많이 없지만, 그럼에도 만들어준 데에는 이유가 있다!

인가 과정에서 사용하는 관리자 계정들은 캐시해놓는 방식으로 구현해보았습니다. 단순히 특정 username에 대응되는 관리자 계정의 존재 여부를 위해 매번 DB를 찌르는게 너무 불필요해보였어요.
- 우테코 정-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Repository
class AdminCacheRepository(
        private val adminRepository: AdministratorRepository,
) {
    private var cacheRepository: ConcurrentHashMap<String, Administrator> = ConcurrentHashMap()
 
    fun findByUsername(username: String): Administrator? {
        if (!cacheRepository.containsKey(username)) {
            updateCache(username)
        }
        return cacheRepository[username]
    }
 
    private fun updateCache(username: String) {
        val admin = adminRepository.findByUsername(username)
        if (admin != null) {
            cacheRepository[username] = admin
        }
    }
}
cs

우리 애플리케이션에는 단순 Spring Data JPA 기능뿐 아니라 NOSQL마냥 캐싱한 값을 리턴해주는 코드가 있기 때문이다.

운영진이 바뀐다 하더라도, 관리자 계정은 웬만해선 하나로 위임해서 넘겨질 예정이었기 때문에 추가될 가능성이 상당히 적었다. 그렇기 때문에 관리자 관련 DB를 접속하는 i/o 비용을 줄이고 concurrentHashMap을 이용하여 애플리케이션에서 바로 리턴하게 하는 게 괜찮다 판단해서 위와 같이 만들었다. 이러한 기능이 있기 때문에 @RepositoryTest도 필요하게 된 것.

 

그 외에 테스트 격리를 위한 스프링 애플리케이션 콜백초기화 시에 AfterPropertiesSet 오버라이딩을 통한 truncate 작업도 매 테스트마다 실행해주도록 코드를 작성해주었다. 정 형 덕분에 편리하게 개발할 수 있게 된 것.

 

3. 초기 API 구현

아직 다는 아니지만, 초기 API를 절반정도 구현했으며 swagger를 통해 프론트 측에서 시뮬레이션해볼 수 있게 세팅해놓았다.

closed된 pr 목록

아직 출석, 세션 관련된 api가 구현이 다 되지 않았지만 곧 있으면 완성되지 않을까 싶다.

6주차~7주차 쯤에는 약간은 QA가 가능하길 바라며 열심히 개발해봐야될 듯하다.

 

확실히 넥스터즈에는 이미 개발 경험이 있던 분들이라 그런지 빠릿빠릿하게 기능이 착착 붙는 느낌이다.

회의할 때에도 무언가 놓친 엣지케이스를 바로 잡아주기도 하고, 인프라 세팅도 척척, api 구현 및 테스트코드도 훨씬 효율적이고 빠르게 정확하게 작성해주는 모습을 팀원들에게서 볼 수 있었다.


넥스터즈 남은 일정 공지

 

일정이 얼마 남지 않았기 때문에 운영진분들께서 남은 일정을 공유해주셨다.

[활동 장소 안내 공지]

안녕하세요. NEXTERS 22기의 활동도 절반이 지나가고 있네요 :)
남은 활동 진행 장소가 이제 거의 픽스되어서 먼저 공지를 드리려고 합니다! 일정에 참고바랍니다 😇

5주차 (2.11) 중간발표 - 마루180
6주차 (2.18) 컨퍼런스 - 온라인
7주차 (2.25) 넥버닝 - 안암 크리에이터스 스페이스
8주차 (3.4) 최종발표 - 마루180

 

 

이제 더 이상 종로에서는 활동을 하지 않는 것 같고, 역삼역 아니면 안암역에서 활동할 일만 남았다.

6주차 컨퍼런스는 온라인으로 진행하며, 다른 분들이 발표하는 것을 듣는 날이어서 사실상 재택근무(?)나 마찬가지.

 

남은 3주간 출석체크 애플리케이션이 잘 개발되길 바라며...

3월에 복학하기 전, 실력도 쑥쑥 상승했음 좋겠다 :)

반응형