본문 바로가기
728x90
반응형

전체 글38

[항해 플러스 백엔드 6기] 중간 회고 뭐부터 손을 대볼까1~2주 차에 열심히 TDD와 아키텍처에 대해 공부도 해보고 드디어 3주 차부터 첫 삽을 떴다....그렇다. 뜨려고 했지만. 안 됐다.마일스톤, 시퀀스 다이어그램, API 명세, ERD, MockAPI... 이중에 해본 것은 ERD 뿐분명 쉬어가는 주차라고 했지만 체감상 그렇지 않았다. 하나씩 검색해 보고 멘토링 청강도 하면서 작성 순서를 명확하게 정해보았다.마일스톤 -> 시퀀스 다이어그램 -> ERD -> API 명세 -> MockAPI 작성(ERD를 가장 뒤로 작성하시는 분들도 많이 계시다)뭐부터 손을 댈지 정하고 하나씩 만들기 시작했다.이런 것들을.그리고 Mock API를 작성했는데 이 부분에 대해 H코치님께서 이런 말씀을 해주셨다."개발 잘하는 게 일 잘하는 게 아니다." (이건.. 2024. 10. 25.
가자, 항해하러 "당신은 결코 배를 육지에 묶어두고서는 새로운 바다를 발견할 수 없다."- 크리스토퍼 콜럼버스 (Christopher Columbus)  "당신은 플러스 백엔드 6기에 승선하였습니다." 드럼을 치다가 개발자의 길로 방향을 틀었고, 동적인 내가 정적인 직업을 갖고 이렇게 계속 개발을 할지는 상상도 못 했다.뭐 아무튼 만족하면서 개발자로서의 삶을 살아오고 있었고,쓰기 민망하지만 걱정과는 다르게신입인데도 불구하고 일 잘한다는 소리를 듣으며 나름의 인정(?)을 받으며 개발을 해왔다.그렇다면 곧 만 3년 차가 되는 지금도 그러한가?!그동안 나를 돌아보았을 때 현재 어떤 개발자가 되었는가 스스로 질문을 해 보았다.생각난 답변은 아래와 같다.1) 무엇이든 물어봐 주세요. 모르면 어떻게든 알아와서 해결하겠습니다! .. 2024. 9. 29.
[JPA] @Transactional 멀티스레드 테스트 및 동시성 이슈 돌파 안녕하세요! 예약 시스템을 개발해 보면서 @Transactional 멀티스레드 테스트 시 발생하는 트러블슈팅과 동시성 이슈를 해결한 경험을 되짚기 위해 공유하려고 합니다. 관리가 필요해 누구나 꽤 높은 확률로 비슷한 경험을 해봤을 것이다. "그건 다 팔고 1인분 밖에 안남았는디~ 친구는 다른 거 주문혀~" 친구와 동일한 메뉴를 주문했지만 재료가 부족해 주문이 실패한 케이스다. 베테랑 아주머니께서는 냉장고의 상태를 고려하여 주문을 받은 것이다. 주문을 했어도 냉장고의 상태에 따라 주문이 됐을 수도 있고 메뉴를 변경해야 할 수도 있다. 그 말은 즉 냉장고의 상태는 공유되는 자원이고, 공유되는 자원은 정확한 상태 관리가 필요하다는 것이다. 이처럼 프로그래밍도 공유되는 자원은 정확하게 관리가 될 수 있도록 레이.. 2024. 3. 11.
[Procedure] 동시성 문제, GOTO를 활용한 PK에러 해결 안녕하세요! 동시성 문제를 저의 상황에 맞게 해결했던 경험을 공유하려고 합니다. 상황은 이렇습니다. 제가 운영 중이던 서비스는 시퀀스가 단순히 번호를 매기는 의미가 아닌 비즈니스적으로 의미 있는 번호로 사용되어야 했습니다. 그래서 프로세스 중간중간에 예외로 인해 시퀀스가 버려지는 일이 발생하지 않아야 했기 때문에 RDBMS의 시퀀스를 사용하지 않고, 직접 시퀀스 테이블을 만들어 시퀀스의 순서가 보장되도록 설계가 되었습니다. 하지만 이러한 설계에는 문제가 있었습니다. 발생한 에러를 보겠습니다. Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 무결성 제약 조건(CHOICODE.SEQ_PK).. 2023. 9. 6.
[H2] JPA User 엔티티, 테이블 drop 에러 상황 H2 DB를 사용하고 있고, Jpa를 이용해 User 엔티티를 만들어 애플리케이션을 실행했다. 에러가 발생했다. Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "drop table if exists [*]user"; expected "identifier"; SQL statement: 원인 나는 지금 H2 2.1.214 버전을 사용중인데 2.1.212 버전부터 user 키워드가 예약어로 지정되었기 때문이다. 해결 해결 방법은 3가지다. 1. @Table 사용하기 @Entity @Table(name = "users") public class User {...} 2. User 엔티티 이름 변경하기 @Ent.. 2023. 8. 20.
728x90
반응형