|
| 1 | +- 환경 변수 |
| 2 | + |
| 3 | + **정의** |
| 4 | + |
| 5 | + 환경 변수는 프로그램이 실행될 때 외부에서 설정하는 값으로, 코드 내부에 직접 입력하지 않고도 설정할 수 있습니다. |
| 6 | + |
| 7 | + **속성** |
| 8 | + |
| 9 | + - **보안성**: 비밀번호나 API 키와 같은 민감한 정보를 코드에 직접 입력하지 않고 환경 변수로 관리합니다. |
| 10 | + - **유연성**: 개발, 테스트, 운영 환경에 따라 다른 설정을 적용할 수 있습니다. |
| 11 | + |
| 12 | + **장점** |
| 13 | + |
| 14 | + - **보안 강화**: 민감한 정보를 코드에 직접 입력하지 않아 노출 위험이 줄어듭니다. |
| 15 | + - **환경별 설정 용이**: 다양한 환경에 맞게 설정을 쉽게 변경할 수 있습니다. |
| 16 | + |
| 17 | + **단점** |
| 18 | + |
| 19 | + - **관리 복잡성**: 환경 변수가 많아지면 관리가 어려워질 수 있습니다. |
| 20 | + - **의존성 문제**: 환경 변수가 설정되지 않으면 애플리케이션이 제대로 작동하지 않을 수 있습니다. |
| 21 | +- CORS |
| 22 | + |
| 23 | + **정의** |
| 24 | + |
| 25 | + CORS는 웹 브라우저에서 다른 도메인의 리소스에 접근할 수 있도록 허용하는 보안 기능입니다. |
| 26 | + |
| 27 | + **속성** |
| 28 | + |
| 29 | + - **보안 정책**: 기본적으로 브라우저는 다른 도메인의 리소스 요청을 차단합니다. |
| 30 | + - **서버 설정 필요**: 서버에서 특정 도메인에 대한 접근을 허용하도록 설정해야 합니다. |
| 31 | + |
| 32 | + **장점** |
| 33 | + |
| 34 | + - **리소스 공유 가능**: 다른 도메인 간에 리소스를 공유할 수 있습니다. |
| 35 | + - **유연한 API 사용**: 외부 API를 사용할 때 유용합니다. |
| 36 | + |
| 37 | + **단점** |
| 38 | + |
| 39 | + - **보안 위험**: 잘못된 설정은 보안 취약점을 초래할 수 있습니다. |
| 40 | + - **설정 복잡성**: 정확한 설정이 필요하며, 실수로 인해 문제가 발생할 수 있습니다. |
| 41 | +- DB Connection, DB Connection Pool |
| 42 | + |
| 43 | + **정의** |
| 44 | + |
| 45 | + - **DB 연결**: 애플리케이션이 데이터베이스와 통신하기 위해 연결을 설정하는 것. |
| 46 | + - **연결 풀**: 미리 여러 개의 DB 연결을 만들어두고, 필요할 때마다 재사용하는 기술. |
| 47 | + |
| 48 | + **속성** |
| 49 | + |
| 50 | + - **성능 향상**: 연결을 재사용하여 성능을 높입니다. |
| 51 | + - **자원 관리**: DB 연결 수를 제한하여 자원을 효율적으로 사용합니다. |
| 52 | + |
| 53 | + **장점** |
| 54 | + |
| 55 | + - **빠른 응답**: 새로운 연결을 생성하는 시간 절약. |
| 56 | + - **자원 절약**: 불필요한 연결 생성을 방지. |
| 57 | + |
| 58 | + **단점** |
| 59 | + |
| 60 | + - **복잡성 증가**: 연결 풀 관리가 필요합니다. |
| 61 | + - **잠재적 오류**: 풀에 문제가 생기면 전체 애플리케이션에 영향. |
| 62 | +- 비동기 (async, await) |
| 63 | + - **정의** |
| 64 | + |
| 65 | + 비동기 처리란 작업이 완료될 때까지 기다리지 않고 다음 작업을 수행하는 방식입니다. `async`와 `await`는 비동기 코드를 동기처럼 작성할 수 있게 도와줍니다. |
| 66 | + |
| 67 | + **속성** |
| 68 | + |
| 69 | + - **`async` 함수**: 항상 `Promise`를 반환합니다. |
| 70 | + - **`await` 키워드**: `Promise`가 해결될 때까지 기다립니다. |
| 71 | + |
| 72 | + **장점** |
| 73 | + |
| 74 | + - **가독성 향상**: 코드가 더 직관적이고 읽기 쉬워집니다. |
| 75 | + - **에러 처리 용이**: `try/catch`를 사용하여 에러를 쉽게 처리할 수 있습니다. |
| 76 | + |
| 77 | + **단점** |
| 78 | + |
| 79 | + - **호환성 문제**: 구형 환경에서는 지원되지 않을 수 있습니다. |
| 80 | + - **복잡한 흐름**: 복잡한 비동기 로직에서는 흐름을 이해하기 어려울 수 있습니다. |
| 81 | +- try/catch/finally |
| 82 | + |
| 83 | + **정의** |
| 84 | + |
| 85 | + `try/catch/finally`는 코드에서 발생할 수 있는 에러를 처리하기 위한 구조입니다. |
| 86 | + |
| 87 | + **속성** |
| 88 | + |
| 89 | + - **`try` 블록**: 에러가 발생할 수 있는 코드를 작성합니다. |
| 90 | + - **`catch` 블록**: 에러가 발생했을 때 실행되는 코드입니다. |
| 91 | + - **`finally` 블록**: 에러 발생 여부와 상관없이 항상 실행되는 코드입니다. |
| 92 | + |
| 93 | + **장점** |
| 94 | + |
| 95 | + - **에러 처리**: 예외 상황을 적절히 처리하여 프로그램의 안정성을 높입니다. |
| 96 | + - **자원 정리**: `finally`를 사용하여 자원을 정리할 수 있습니다. |
| 97 | + |
| 98 | + **단점** |
| 99 | + |
| 100 | + - **과도한 사용**: 불필요하게 사용하면 코드가 복잡해질 수 있습니다. |
| 101 | + - **비동기 코드 제한**: 비동기 코드에서는 `try/catch`가 예상대로 작동하지 않을 수 있습니다. |
0 commit comments