본문 바로가기

분류 전체보기

(17)
[코리스토텔레스] 패키지 구조: 계층형 구조 vs 도메인형 구조 https://github.com/woowacourse-6th-team99/2024-coristotle/discussions/3 패키지 구조: 계층형 구조 vs 도메인형 구조 · woowacourse-6th-team99 2024-coristotle · Discussion #3패키지 구조를 계층형 구조로 생성하는 것이 좋을까, 도메인형 구조로 생성하는 것이 좋을까? 계층형 구조 예시 controller ⎿ ProductController ⎿ MemberController ⎿ ArticleController service ⎿ ProductService ⎿ github.com 코리스토텔레스는 본인의 설계에 철학을 갖기 위한 토론 스터디입니다. 해당 스터디에서 주장했던 입장을 정리한 글이므로, 저의 사견이 개입..
[협업] 한 달 간의 고진감래 https://youtu.be/SIuF37EWaLU?si=BfCObIwG7VtW6HXL Q. 한 달 간 팀 프로젝트를 진행하며 감정 상태의 변화가 긍정적으로 바뀐 경우 긍정적으로 바뀐 상황, 이유를 떠올려 보고 이를 한 단계 더 개선하기 위해 어떤 시도를 하면 좋을까요? 1주차 (기획 + 팀빌딩)당황스러움, 화남, 불안함, 답답함, 초조함 나는 함께 하는 사람이 좋을 때 힘이 난다. 레벨2에서 크루들에게 이런 질문을 자주 했다. “성격이 정말 안 맞는데 일 잘 하는 크루 vs 일을 못하는데 성격이 정말 잘 맞는 크루” 중 누구와 함께 프로젝트하는 것이 좋은가? 나는 항상 후자를 택했다. 그만큼 레벨3 프로젝트 조 크루들에 대한 기대감이 높았고 나와 성격이 잘 맞는 사람이길 바랐다. 그러나 레벨3 프로젝트..
CI/CD란 | Github Actions 사용해보기 요구 사항작년 여름 참여했던 북링크 프로젝트에서, 백엔드 코드에 변경 사항이 발생할 때마다 깃허브 pull, 빌드, 서버 내리고 올리기 과정을 반복했다. 모든 자잘한 작업들이 수동이었기 때문에 명령어를 입력할 때 실수가 자주 발생했고, 가끔은 서버 업데이트를 잊어 프론트엔드에게 미안한 상황도 종종 발생했다. CI/CD에 무지했기 때문에 발생했던 불편함이었다. 이번 프로젝트에서는 그럴 일이 없도록 CI/CD를 적용해보자! 용어 정리컴파일: 소스코드 → 기계어 (ex. 영어 글 → 한글 글)빌드: 소스코드 → 컴퓨터에서 실행 가능한 소프트웨어 산출물, 빌드에 컴파일이 포함되어있음 (ex. 글 → 책)배포: 빌드 결과물을 사용자가 접근할 수 있는 환경에 배치 (ex. 책을 서점에 배치) CI/CD테스트, 통합..
[인프라] AWS EC2 EC2Elastic Compute Cloud컴퓨터를 빌려 원격으로 접속해 사용하는 서비스주로 백엔드 서버 배포에 사용, 프론트엔드는 다른 서비스를 더 많이 이용사용 이유내 컴퓨터로 서버를 배포하는 경우 24시간 동안 컴퓨터를 켜놓아야 하므로 번거로움내 컴퓨터로 서버를 배포하는 경우 보안적으로 위험여러 부가기능 제공Region인프라를 지리적으로 나누어 배포한 각각의 데이터 센터EC2는 region마다 따로 관리됨각 region은 고유의 이름을 가짐 (ap-northeast-2, us-east-1 등)선택 기준사용자의 위치와 어플리케이션을 실행하고 있는 컴퓨터의 위치가 멀수록 속도는 느려짐주 사용자들의 위치와 지리적으로 가까운 리전을 선택하는 것이 유리EC2 설정하기애플리케이션 및 OS 이미지어떤 OS를 가..
문서화 도구 Swagger vs Spring REST Docs 앞으로 팀 프로젝트에서 필요할 사전 지식을 전날 준비하기로 다짐했다.노션에 틈틈이 기록해두는 것에 그치지 않고, 부족하지만 블로그에 정제된 문장으로 기록하는 연습을 해보겠다!SwaggerOAS를 기반으로 구축된 오픈소스 도구 세트로, REST API를 설계, 빌드, 문서화하고 사용하는 데 도움이 된다. * OAS: Open API Specification(이전 Swagger Specification), Rest API에 대한 API 설명 형식 일단 적용해보기확실히 Spring REST Docs 문서를 생성해본 후 Swagger를 적용해보니, 신세계였다. [TroubleShooting 1] Swagger UI를 제공하는 라이브러리를 선택할 때 많은 레퍼런스에서 springfox를 사용하여, 나도 같은 라..
[TroubleShooting] 에러 해결 과정에서 알게 된 @DirtiesContext 동작 방식 나의 상황@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)class ThemeDaoTest { private final JdbcTemplate jdbcTemplate; private final ThemeDao themeDao; private final SimpleJdbcInsert themeInsertActor; @Autowired public ThemeDaoTest(JdbcTemplate jdbcTemplate, ThemeDao themeDao) { ..
[우아한테크코스] 2월 한달 회고 3월 중순에 적어보는 2월 회고록. 드디어 시간이 생겼다! 면 거짓말이고 드디어 시간을 다룰 여유가 생겼다. 2월 한 달간 내가 한 일연극자동차 경주 미션사다리 게임 미션자취, 졸업 아니 도대체 연극을 왜…?우리 조원 모두는 우테코에서 연극한다는 사실을 알고 있었다지만 나는 전혀 모르고 있었다. 첫날 OT에서 갑자기 연극을 한다는 소식을 듣고 아, 연극팀이 와서 초대 무대를 하나? 복지 짱이다! 싶었다. 그런데 그 연극을 내가 한다는 것… 절망적이었다. 안 그래도 낯 심하게 가리는데 연기를 하라니 ^__^ 그 당황스러운 마음가짐으로 일주일 간 연극을 준비했다. 각자 아이디어를 가져오기로 해서 자료 조사(?)를 하는 과정에서도 이게 맞나? 싶었다. 뭘 생각하긴 했는데 이거로 하나의 연극을 꾸려야 한다는 게..
[GIT] cherry-pick | 다른 브랜치의 커밋 적용하기 아! 여기가 아닌데!우테코에서는 1단계 미션이 마무리되면나의 모든 커밋 기록이 우테코 공식 계정 본인 브랜치에 하나의 커밋으로 merge 된다.이렇게 머지된 브랜치를 본인의 로컬 브랜치로 복사하여 2단계를 진행해야 한다.1단계에 커밋한 로그들은 하나의 커밋으로 남아있어야 한다. 하지만 여기서 미련한 나는 내가 구현하던 로컬 저장소에 이어서 미션을 진행했다.어디까지가 1단계 커밋이고 어디까지가 2단계 커밋인지 드러나지 않는 상황. 2단계 미션을 제출하는 과정에서 나의 실수를 깨달았다.그러나 이미 너무 멀리왔기에 돌이킬 수 없었다. 리뷰어님께 양해를 구하고 통째로 커밋할까? 새로운 브랜치 파서 다시 하나하나 커밋할까?별의별 방법이 다 떠올랐다. 하지만 여기서 실낱같은 희망.깃이 커밋의 일부를 가져오는 기능을..